Can I call a value of another class in onCreate()?
-
26-10-2019 - |
문제
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 ?