Puis-je appeler une valeur d'une autre classe dans onCreate ()?
-
26-10-2019 - |
Question
J'essaie de savoir s'il y a un moyen d'appeler « submitValue », fait dans createNewSubmitButton (); dans le onCreate (); fonction?
Je veux présenter la valeur EditText à un TextView lorsque vous appuyez sur le bouton Soumettre la valeur, donc je mis un onClick là-dedans, mais je ne pouvais pas appeler submitValue en onCreate?
Voir mon exemple de code pour voir ce que je veux dire:
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;
}
}
}
J'espère que quelqu'un peut me aider
La solution
En fait, vous ne pouvez pas appeler somthing qui n'a pas encore été créé en vue.
Pourtant, vous avez 2 options:
A - Créer dans votre onCreate(...)
mais ajouter plus tard à la vue
B- Créer, l'ajouter, mais utilisez le paramètre folowing:
sibmitButton.setVisibility(View.GONE);
La cool chose avec cela, je que vous pouvez ajouter le bouton, le jeu avec elle (programme) mais l'utilisateur ne peut pas le toucher! Il ne prend même pas « espace » sur votre point de vue!
Et en cas de besoin, il suffit d'utiliser:
sibmutButton.setVisibility(View.VISIBLE);
Est-ce que vous voulez?