来自更新的EditText的getText

时间:2011-10-12 13:40:41

标签: android

我有一个布局,我有一个带有预定义文本的EditText。

然后我有一个按钮,当按下该按钮时,会显示一个对话框,其中包含另一个EditText,用于获取上一个EditText的文本。

这很好用。但是当我编辑第一个EditText并再次按下该按钮时,它会显示旧文本,而不是新文本。

如何获取更新后的文字?

这是我从第一个EditText获取文本的代码(在onCreateDialog中):

final View notesDialogLayout = getLayoutInflater().inflate(R.layout.notes_dialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(notesDialogLayout)
       .setCancelable(false)
       .setPositiveButton(R.string.save, new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
               dialog.cancel();
           }
       })

AlertDialog alert = builder.create();

mNotesEdit = (EditText) notesDialogLayout.findViewById(R.id.task_notes_dialog);
mNotesEdit.setText(mNotes.getText());

mNotes只是一个EditText。

第一次打开Dialog时,它会获取更新的文本。从第二次开始,即使我编辑它也会始终使用相同的文本。

4 个答案:

答案 0 :(得分:2)

您正在使用onCreateDialog。此方法仅调用一次,您必须使用onPrepareDialog在对话框中设置文本,每次调用showDialog()时都会调用该文本。

修改

protected void onCreateDialog(int dialogId) {
    View notesDialogLayout = getLayoutInflater().inflate(R.layout.notes_dialog, null);
    return new AlertDialog.Builder(this)
            .setView(notesDialogLayout)
            .setCancelable(false)
            .setPositiveButton(R.string.save, null)
            .create();
}

protected void onPrepareDialog(Dialog dialog) {
    EditText content = (EditText) dialog.findViewById(R.id.task_notes_dialog);
    content.setText(mNotes.getText());
}

答案 1 :(得分:0)

以下是适用的代码

      package com.hollow;

    import android.app.Activity;
    import android.os.Bundle;
  import android.view.View;
   import android.view.View.OnClickListener;
  import android.widget.Button;
    import android.widget.EditText;
   import android.widget.Toast;

public class HellowActivity extends Activity {
/** Called when the activity is first created. */

EditText editText;
EditText editText2;
Button b;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    editText =(EditText) findViewById(R.id.editText1) ;
    editText2 = (EditText) findViewById(R.id.editText2);
    b = (Button) findViewById(R.id.button1);
    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            editText2.setText(editText.getText());

        }
    });
}
     }

答案 2 :(得分:0)

是的,它显示旧值,因为您在xml文件代码中输入了预定义文本。 为了解决这个.. 你必须将你的edittext文本字符串处理到你的java文件中。 更新该字符串变量。

eg: String myTextInput = "Predefined text";
    EditText edt = (EditText) findViewId(R.id.edt);
    edt.setText(myTextInput);

现在,当您更改文本时,请更新变量上的值,如:

myTextInput = edt.getText();

答案 3 :(得分:0)

我试图实现onPrepareDialog,但我没有运气,因为我没有找到如何更新对话框内的内容(就像我的情况下的EditText)。

所以我把它放在对话框的按钮中:

removeDialog(NOTES_DIALOG_ID);

现在它总是获取更新的文本,因为每次关闭时都会删除对话框。