2011-10-11 37 views
0

我正在嘗試讀取EditText框並將其內容發送到自定義對話框中的另一個方法。我目前的代碼導致強制關閉。該logcat的很模糊......但是我知道未捕獲的異常發生在這個方法:嘗試讀取自定義對話框中的編輯框...獲取FC

public void getName(){ 

     Dialog dialog = new Dialog(main.this); 
     dialog.setContentView(R.layout.customdialog); 
     dialog.setTitle("New Game"); 
     dialog.setCancelable(true); 
     //there are a lot of settings, for dialog, check them all out! 
     final EditText inputBox = new EditText(this); 

     //set up text 
     final TextView text = (TextView) dialog.findViewById(R.id.TextView01); 
     text.setText("Enter Your Name..."); 


     //set up button 
     final Button button = (Button) dialog.findViewById(R.id.namebutton); 
     button.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      String str = inputBox.getText().toString(); 
      setName(str); 
     } 
     }); 
     //now that the dialog is set up, it's time to show it  
     dialog.show(); 
    } 

這是自定義XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" android:layout_height="wrap_content"> 
<LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/linearLayout1"> 
    <TextView android:text="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/nameprompt"></TextView> 
    <EditText android:layout_width="fill_parent" android:id="@+id/editText1" android:layout_height="wrap_content" android:inputType="textPersonName" android:text="Player"> 
     <requestFocus></requestFocus> 
    </EditText> 
    <Button android:layout_height="wrap_content" android:id="@+id/namebutton" android:text="Ok" android:layout_width="fill_parent"></Button> 
</LinearLayout> 

</RelativeLayout> 

任何想法?

+0

你能不能給我們logcat的輸出? –

回答

2

您擁有的EditText在XML的對話框的佈局......和你正確使用findViewById()來實例化的TextView ...

您需要爲EditText上做同樣的,也可以使用findViewById()來實例化它。

final EditText inputBox = (EditText) dialog.findViewById(R.id.editText1); 
1

有些東西與輸入框對象有關。你用這種方法創建它,但是我沒有看到你實際上在任何地方添加了佈局。此方法完成後,您將顯示對話框,但輸入框不會顯示在任何位置。實際上,我認爲inputBox可能是垃圾收集的,因爲getName()方法完成後沒有引用。因此,當你調用獲取輸入時,它可能爲空。

我想你的意思做的是這樣的:

final EditText inputBox = (EditText)dialog.findViewById(R.id.editText1)