web-dev-qa-db-ja.com

Android-カスタムダイアログ-EditTextからテキストを取得できません

カスタムダイアログに問題があります。
私のダイアログは、TextViewEditText、および「OK」ボタンで構成されています。 [OK]をクリックすると、EditTextフィールドからテキストが取得され、アクティビティで定義された文字列変数「name」に割り当てられます。
すべてが機能しているようで、エラーなどはありませんが、「テキスト」は常に空の文字列です。
このような問題に関するいくつかのトピックを読みましたが、ここでどのような調整を行う必要があるのか​​はよくわかりません。
私はAndroidプログラミングにまったく慣れていないので、誰かが問題を説明してくれたら感謝します。事前に感謝します。

     final Dialog dialog = new Dialog(MyActivity.this);
     dialog.setContentView(R.layout.custom_dialog);
     dialog.setTitle("Title");

     final View layout = View.inflate(this, R.layout.custom_dialog, null);
     Button button = (Button) dialog.findViewById(R.id.dialog_ok);
     button.setOnClickListener(new OnClickListener() {
         public void onClick(View v) {
                EditText edit=(EditText)layout.findViewById(R.id.dialog_edit);
                String text=edit.getText().toString();

                name=text;

                dialog.dismiss();
         }
     });   

     dialog.show();
27
ThunderSS

必要のない場所でレイアウトを膨らませています。ご覧のとおりコードを修正しました。膨張した行を削除し、EditTextビューを見つけようとする行を変更しました。

final Dialog dialog = new Dialog(MyActivity.this);
 dialog.setContentView(R.layout.custom_dialog);
 dialog.setTitle("Title");

 Button button = (Button) dialog.findViewById(R.id.dialog_ok);
 button.setOnClickListener(new OnClickListener() {
     public void onClick(View v) {

            EditText edit=(EditText)dialog.findViewById(R.id.dialog_edit);
            String text=edit.getText().toString();

            dialog.dismiss();
            name=text;

     }
 });   


dialog.show();
29
matsjoe

Matsjoeとkrishnaの代替(両方とも):

builder.setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
    //@Override
    public void onClick(DialogInterface dialog, int id) {
      // sign in the user ...

      Dialog dialogObj =Dialog.class.cast(dialog);
      EditText etUsr=(EditText) dialogObj.findViewById(R.id.username_id_value);
      userStr = etUsr.getText().toString();      
    }
  }
  );

Kf

2
K F

それがあなたを助けることを願っています。

private void inputFromDialog() {

    final Dialog dialog = new Dialog(SplashActivity.this);
    dialog.setContentView(R.layout.view_dialog);
    dialog.setTitle("Title");
    dialog.setCancelable(false);
    dialog.show();

    Button button = (Button) dialog.findViewById(R.id.continue_BTN);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            EditText inputET=(EditText)dialog.findViewById(R.id.input_ET);


            if (inputET.getText().toString().equals("")){

                inputET.setError("This field is required");

            }else {

                mssid = inputET.getText().toString();
                dialog.cancel();
                Toast.makeText(SplashActivity.this, mssid, Toast.LENGTH_SHORT).show();
            }

        }
    });



}
0
Juboraj Sarker