2016-04-27 13 views
-1

UIにハンドラを介してダイアログウィンドウをポストしていて、OKを押したときにEditTextからStringを取得したいのですが、常に空のStringを返します。 マイコード:Edittextは空の文字列を返します

public void showLabelDialog() { 
    handler.post(new Runnable() { 
     @Override 
     public void run() { 
      AlertDialog.Builder builder = new AlertDialog.Builder((Activity) getThis()); 
      LayoutInflater inflater = ((Activity) getThis()).getLayoutInflater(); 
      View dialogView = inflater.inflate(R.layout.label_dialog, null); 
      final EditText edt=(EditText) findViewById(R.id.label_dialog); 
      builder.setView(dialogView); 
      builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        setCurrentLabel(edt.getText().toString()); 
        System.out.println("Current text:" + edt.getText().toString()); 
        labeled = true; 
       } 
      }); 
      builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        setCurrentLabel(null); 
        labeled = true; 
       } 
      }); 
      AlertDialog b = builder.create(); 
      b.show(); 
     } 
    }); 
} 

出力は次のようになります。

I /のSystem.out:現在のテキスト:

label_dialog.xmlは次のとおりです。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:padding="10dp" 
android:orientation="vertical"> 
<EditText 
    android:id="@+id/label_dialog" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:title="@string/label_dialog" 
    android:inputType="text" /> 
</LinearLayout> 
+0

label_dialog.xmlを投稿できますか? – Raghavendra

+1

最後の 'EditText edt =(EditText)dialogviewを使ってみてください。 findViewById(R.id.label_dialog); ' – vijaypalod

+0

問題は解決しましたが、誰かを助ける場合に備えてlabel_dialog.xmlを投稿します。 – rozsatib

答えて

3

からあなたEditTextを呼んでくださいあなたのダイアログビューでは、アクティビティの中のedittextを参照していますが、ダイアログビューから呼び出す必要があります

final EditText edt = (EditText) dialogView.findViewById(R.id.label_dialog);

1

、使用され

public void showLabelDialog() { 

      AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
      LayoutInflater inflater = (MainActivity.this).getLayoutInflater(); 
      View dialogView = inflater.inflate(R.layout.label_dialog, null); 
      final EditText edt=(EditText)dialogView.findViewById(R.id.label_dialog); 
      builder.setView(dialogView); 
      builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        //setCurrentLabel(edt.getText().toString()); 
        System.out.println("Current text:" + edt.getText().toString()); 
        //labeled = true; 
       } 
      }); 
      builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        //setCurrentLabel(null); 
        //labeled = true; 
       } 
      }); 
      AlertDialog b = builder.create(); 
      b.show(); 
     } 

final EditText edt=(EditText)dialogView.findViewById(R.id.label_dialog); 

代わりの

final EditText edt=(EditText)findViewById(R.id.label_dialog); 

コーディングハッピーこれを試してみてください。!!!

関連する問題