我有一个布局,我有一个带有预定义文本的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时,它会获取更新的文本。从第二次开始,即使我编辑它也会始终使用相同的文本。
答案 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);
现在它总是获取更新的文本,因为每次关闭时都会删除对话框。