将editText存储到变量中

时间:2014-02-19 20:35:41

标签: java android textview android-edittext

以下是我目前的情况:

我有一个带有textView的常规xml页面,当单击它时会打开一个弹出对话框。 该对话框包含2个editText。目前,我的代码(OnClick - Done按钮)获取两个编辑文本的值,并将它们放入单个TextView中。但是,当我再次打开弹出窗口时,而不是在其自己的editText中列出的两个字符串(其中每个字符串最初输入),存储在文本视图中的组合字符串出现在一个编辑文本中。 问题是虽然我从2个不同的editText获取字符串并将它们存储到一个textView中。我无法单独取回每个字符串。 我知道我可能必须将每个editText中的字符串存储到变量中,然后我可以使用变量来显示textView中的字符串(以及editText - 当我再次打开弹出对话框时) 我怎么会这样呢? 谢谢你的帮助

代码:

public class MainActivity extends Activity {
  /** Called when the activity is first created. */
  TextView showPopUpButton; //NEW
  EditText getInput; //NEW
  EditText getInput2; //NEW

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    showPopUpButton = (TextView) findViewById(R.id.buttonShowPopUp); //NEW
    showPopUpButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        showPopUp3();           
      }
    });
  }

  private void showPopUp3() {
    AlertDialog.Builder helpBuilder = new AlertDialog.Builder(this);
    helpBuilder.setTitle("Enter PU Builder");
    LayoutInflater inflater = getLayoutInflater();
    View checkboxLayout = inflater.inflate(R.layout.popuplayout, null);

    getInput = (EditText)  checkboxLayout.findViewById(R.id.editText1); //MISTAKE
    getInput2 = (EditText)  checkboxLayout.findViewById(R.id.editText2); //MISTAKE
    getInput.setText(showPopUpButton.getText()); //New to keep the text in the editText when done is pressed
    getInput2.setText(getInput2.getText()); //New test

    helpBuilder.setView(checkboxLayout);
    helpBuilder.setPositiveButton("Done", new DialogInterface.OnClickListener() {
      @Override  
      public void onClick(DialogInterface dialog, int which) {
        showPopUpButton.setText(getInput.getText() + ", " + getInput2.getText()); //NEW
      }
    });

    AlertDialog helpDialog = helpBuilder.create();
    helpDialog.show();
  }
}

2 个答案:

答案 0 :(得分:0)

要回答您的问题,是的,您需要单独存储这些EditText输入。将它们保存在数组或列表中可以使它比命名每个EditText输入更具动态性,但它们需要保持独立。

使用TestWatcher自动执行此操作可能会减少痛苦。

答案 1 :(得分:0)

String variable_name = getInput2.getText().toString();
String variable_name2 = getInput.getText().toString();
String variable_name3 = variable_name + variable_name2;

根据我的理解,您应该只获取字符串并存储它们,然后在需要时将它们连接起来。我希望你对你的问题更清楚。