2013-07-04 69 views
3

我試圖在單個類中創建自定義對話框。該對話框在主要活動中啓動:Android無法在對話框中獲取EditText getText()。toString()

 DialogLogin login = new DialogLogin(); 
     login.show(getFragmentManager(), DISPLAY_SERVICE); 

在啓動應用程序時,主要活動在後臺啓動,然後對話框啓動。 在對話框中有一個EditText字段來接收用戶輸入。按下保存按鈕時應該讀出EditText字段並顯示輸入,但它總是空的。此外,LogCat中沒有錯誤...我嘗試了許多解決同一問題的方法,但沒有任何成效。我希望任何人有一個工作解決方案! =)

import android.app.AlertDialog; 
import android.app.Dialog; 
import android.app.DialogFragment; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.EditText; 

public class DialogLogin extends DialogFragment { 
String androidID; 
LayoutInflater inflater; 

public Dialog onCreateDialog(Bundle savedInstanceState) { 

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    inflater = getActivity().getLayoutInflater(); 

    builder.setMessage(R.string.loginMessage) 
      .setTitle(R.string.login) 
      .setView(inflater.inflate(R.layout.loginlayout, null)) 
      .setPositiveButton(R.string.speichern, 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          System.out.println("LOGIN"); 
          View v = inflater.inflate(R.layout.loginlayout, null); 
          EditText text = (EditText) v.findViewById(R.id.loginEdit); 

          System.out.println(text.getText().toString()); //Displays nothing 
          System.out.println(text.length());    //is 0 

         } 
        }); 

    return builder.create(); 
} 

}

而且loginlayout.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<EditText 
    android:id="@+id/loginEdit" 
    android:inputType="text" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:hint="@string/editText" > 

</EditText> 

</LinearLayout> 
+0

確定您檢查了logcat的信息? – Raghunandan

+0

沒有錯誤或警告.. – JU5T1C3

回答

6

會人爲增加了新的佈局,其中EditText中沒有任何文字。你只需要一次膨脹你的佈局,並保留一個參考。

final View view = inflater.inflate(R.layout.loginlayout, null); 

/* ... */ 
.setView(view) 
/* ... */ 
EditText text = (EditText) view.findViewById(R.id.loginEdit); 
相關問題