سؤال

I am trying to figure out if there is a way to call "submitValue", made in createNewSubmitButton(); in the onCreate(); function?

So I want to submit the value in EditText to a TextView when you hit the Button submit value, so I set a onClick in there, but I couldn't call submitValue in onCreate?

See my code example to see what I mean:

package com.lars.myApp;

import com.lars.myApp.R;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.view.View;
import android.view.View.OnClickListener;

public class myAppActivity extends Activity {

    int currentValue =  0;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final EditText valueOne = (EditText) findViewById(R.id.valueOne);
        Button addOne = (Button) findViewById(R.id.addOne);
        Button minusOne = (Button) findViewById(R.id.minusOne);

        Button addButton = (Button) findViewById(R.id.add);
        final TableLayout tableLayout1 = (TableLayout) findViewById(R.id.tableLayout1);

        TextView textView = new TextView(this);
        textView.setText("New text");

        addOne.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                addValue();
                valueOne.setText("" + currentValue);
            }
        });

        minusOne.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                minusValue();
                valueOne.setText("" + currentValue);
            }
        });

        addButton.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                tableLayout1.addView(createNewRow());
            }
        });


        // I OUTCOMMENTED THIS, BECAUSE IT DIDN'T WORK, submitValue: "CANNOT BE RESOLVED"

        /*submitValue.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                tableLayout1.addView(createNewTextView(newValue.getText().toString()));
            }

        });*/

    }

    public TableRow createNewRow() {
        final TableRow newRow = new TableRow(this);
        newRow.addView(createNewContainer());
        return newRow;
    }

    public LinearLayout createNewContainer(){
        final LinearLayout newContainer = new LinearLayout(this);
        newContainer.addView(createNewEditableText());
        newContainer.addView(createNewSubmitButton());
        return newContainer;
    }    
    public EditText createNewEditableText() {
        final EditText newValue = new EditText(this);
        newValue.setHint("New");
        return newValue;
    }

    public Button createNewSubmitButton(){
        final Button submitValue = new Button(this);
        submitValue.setText("Submit");
        return submitValue;
    }

    public TextView createNewTextView(String text) {
        final TextView textView = new TextView(this);
        textView.setText(text);
        return textView;
    }

    public void addValue(){
        if(currentValue <= 999){
        currentValue = currentValue + 1;
        }
    }  

    public void minusValue(){
        if(currentValue >= 1){
            currentValue = currentValue - 1;
        }
    }  
}

I hope someone can help me

هل كانت مفيدة؟

المحلول

In fact, you can't call somthing that isn't yet created in your view.

Still you have 2 options :

A - Create it in your onCreate(...) but add it later to your view

B- Create it, add it but use the folowing parameter :

sibmitButton.setVisibility(View.GONE);

The thing cool with this i that you can add the button, play with it (programmatically) but the user can't touch it ! It even doesn't take any 'space' on your view !

And when needed, just use :

sibmutButton.setVisibility(View.VISIBLE);

Is it what you want ?

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top