簡體   English   中英

來自更新的EditText的getText

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM