在对话框布局中,我根据用户选择以编程方式创建第二个EditText。当我想返回输入时,我需要知道是否已创建第二个EditText。我不明白如何进行这项检查。我的语句if(edittextTwo!= null)总是为null,即使第二个EditText已经显示并输入了文本。
以下是创建第二个EditText并返回其输入的方法:
if(edittextTwo!= null)
private void displayASecondEdittext(String title) {
ViewGroup layout = (ViewGroup) findViewById(R.id.layout_editdialog);
TextView titleTwo = new TextView(this);
titleTwo.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
titleTwo.setText(title);
layout.addView(titleTwo);
EditText edittextTwo = new EditText(this);
edittextTwo.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
layout.addView(edittextTwo);
}//END displayASecondInputfield
private void returnResult() {
Intent resultIntent = new Intent(this, EditDialog.class);
resultIntent.putExtra(EDITONE, edittextOne.getText().toString());
if (edittextTwo != null) {
resultIntent.putExtra(EDITTWO, edittextTwo.getText().toString());
Log.v(TAG, "edittextTwo ="+edittextTwo.getText().toString());
}
setResult(Activity.RESULT_OK, resultIntent);
finish();
}//END returnResult
答案 0 :(得分:1)
我不明白上面的代码是如何编译的,因为edittextTwo
是displayASecondEdittext
中的局部变量。将它作为活动中的成员变量,它应该可以工作。
答案 1 :(得分:1)
将EditText edittextTwo;
移出方法的一边。把它放在这里:
public class myActivity extends Activity
EditText edittextTwo = null;
然后,在DisplayASecondEditText()
中,执行此操作而不是您拥有的内容:
edittextTwo = new EditText(this);
这将使您的声明成为全局,并允许所有方法访问变量。