2014-01-27 44 views
-1

我有這樣的代碼:如何把一個EditText的對話框?

<EditText 
     android:id="@+id/etC" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:hint="@string/amount_credits" 
     android:inputType="number" 
     android:imeOptions="actionDone" 
     android:singleLine="true" /> 

AlertDialog.Builder creditsBox = new AlertDialog.Builder(this); 
    edC = (EditText) findViewById(R.id.etC); 
    creditsBox.setView(edC); //THIS LINE MAKES THE APP CRASH 
    creditsBox.setMessage("Enter amount of credits") 
     .setCancelable(false) 
     .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface arg0, int arg1) { 
      // TODO Auto-generated method stub 

     } 
    }); 
    AlertDialog creditsBoxC = creditsBox.create(); 
    creditsBoxC.show(); 

現在我不明白問題出在哪裏。任何人都可以幫助我嗎?謝謝。

+0

什麼是錯誤..? – JoxTraex

回答

0

我認爲你不能設置的EditText這樣。

試試這個:

  • 創建新的佈局(其中包含的EditText)
  • 充氣該佈局
  • 設置該佈局的AlertDialog

這裏是res/layout/prompts.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout_root" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:padding="10dp" > 

    <EditText 
     android:id="@+id/edt_nm" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <requestFocus /> 

    </EditText> 

</LinearLayout> 

而在你活動

LayoutInflater li = LayoutInflater.from(context); 
       View promptsView = li.inflate(R.layout.prompts, null); 

       AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
         context); 

       // set prompts.xml to alertdialog builder 
       alertDialogBuilder.setView(promptsView); 

       final EditText userInput = (EditText) promptsView 
         .findViewById(R.id.edt_nm); 

       // set dialog message 
       alertDialogBuilder 
        .setCancelable(false) 
        .setPositiveButton("OK", 
         new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog,int id) { 
         // get user input and set it to result 
         // edit text 
         result.setText(userInput.getText()); 
         } 
         }) 
        .setNegativeButton("Cancel", 
         new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog,int id) { 
         dialog.cancel(); 
         } 
         }); 

       // create alert dialog 
       AlertDialog alertDialog = alertDialogBuilder.create(); 

       // show it 
       alertDialog.show(); 
0

我猜你是沿「觀已經有母」 問題是線某處收到錯誤信息,您正試圖重複使用相同的EditText對象每次你建立你的警報。 因此,通過動態創建一個新的EditText對象,使用edc = new EditText(); 或使用inflate()方法而不是findViewById(),因爲充氣它會每次給你一個新的實例。

0

試試這個

EditText etC; 

LayoutInflater factory = LayoutInflater.from(yourActivity.this); 
final View textEntryView = factory.inflate(R.layout.yourlayout, null);   
etC= (EditText)textEntryView.findViewById(R.id.etC); 

new AlertDialog.Builder(yourActivity.this) 
.setTitle("xx") 
.setIcon(R.drawable.logo3) 
.setView(textEntryView) 
..... 
0

見這個例子

LayoutInflater li = LayoutInflater.from(classname.this);  
View dialogView =li.inflate(R.layout.common_dialog_layout, null); 
AlertDialog.Builder dialogwindow = new AlertDialog.Builder(classname.this); 
           dialogwindow.setView(dialogView);_addEditText = (EditText) dialogView.findViewById(R.id.editTextDialogtext); 
_dialogTextView=(TextView)dialogView.findViewById(R.id.dialog_textview); 

這裏是XML類

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout_root" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:padding="10dp" > 

    <TextView 
     android:id="@+id/dialog_textview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Type Your Text : " 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <EditText 
     android:id="@+id/editTextDialogtext" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <requestFocus /> 

    </EditText>