[英]getText from an EditText that is updated
我有一個布局,我有一個帶有預定義文本的EditText。
然后我有一個按鈕,當按下該按鈕時,會顯示一個對話框,其中包含另一個EditText,用於獲取上一個EditText的文本。
這很好用。 但是當我編輯第一個EditText並再次按下該按鈕時,它會顯示舊文本,而不是新文本。
如何獲取更新的文本?
這是代碼(在onCreateDialog中),我從第一個EditText獲取文本:
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第一次打開時,它會獲得更新的文本。 從第二次開始,它始終是相同的文本,即使我編輯它。
您正在使用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());
}
這是有效的代碼
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());
}
});
}
}
是的,它顯示舊值,因為您在xml文件代碼中輸入了預定義文本。 為了解決這個問題,你必須將你的edittext文本字符串處理成你的java文件。 更新該字符串變量。
eg: String myTextInput = "Predefined text";
EditText edt = (EditText) findViewId(R.id.edt);
edt.setText(myTextInput);
現在,當您更改文本時,請更新變量上的值,如:
myTextInput = edt.getText();
我試圖實現onPrepareDialog,但我沒有運氣,因為我沒有找到如何更新對話框內的東西(就像我的情況下的EditText)。
所以我把它放在對話框的按鈕中:
removeDialog(NOTES_DIALOG_ID);
現在它始終獲取更新的文本,因為每次關閉時都會刪除對話框。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.