2011-04-28 95 views
3

嗨我有一個alertdialog,當你點擊一個列表視圖中的項目時創建,我試圖從我的活動中獲取文件,描述,作者等名稱,並顯示它在我的alertdialog中,但.setText不起作用,有人可以幫忙。謝謝,這裏是我的代碼:http://pastebin.com/FzWSPp5eAndroid AlertDialog SetText

回答

1

這完全不是你如何正確使用Android中的對話框。你需要在onCreateDialog的覆蓋來定義對話框,如文檔中描述:

http://developer.android.com/guide/topics/ui/dialogs.html 

這個指南,你應該能夠解決您的問題。這是我剛纔複製並從一個隨機的應用程序粘貼的一個例子:

@Override 
protected Dialog onCreateDialog(int id, Bundle b) { 
    LayoutInflater inflater = (LayoutInflater) this.getSystemService(this.LAYOUT_INFLATER_SERVICE); 
    AlertDialog.Builder builder = null; 
    switch(id) { 
     case DIALOG_BLOCK_SIZE: 
     { 
      Dialog dialog = new Dialog(this); 
      final View dialogLayout = inflater.inflate(R.layout.dialog_block_size, null); 
      builder = new AlertDialog.Builder(this); 
      builder.setView(dialogLayout); 
      builder.setTitle("Set Block Size"); 

      final EditText blockIn = (EditText)dialogLayout.findViewById(R.id.block_size_in); 
      blockIn.setText(new Integer(pref.getInt("block_size", 6)).toString()); 

      builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         SharedPreferences.Editor editor = pref.edit(); 
         editor.putInt("block_size", new Integer(blockIn.getText().toString())); 
         editor.commit(); 
         ////////TODO/////////// 
         //notify MinutemaidService that we have changed the block_size 
         dialog.dismiss(); 
        } 
       }); 
      builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         dialog.cancel(); 
        } 
       }); 
      dialog = builder.create(); 
      return dialog; 
     } 
     default: 
     { 
      return null; 
     } 
    } 
    return dialog; 
} 

與上面的代碼,你可以調用的ShowDialog(DIALOG_BLOCK_SIZE),以顯示該對話框。還要注意對話框會被創建一次並一遍又一遍地顯示。強制重建對話框,在調用showDialog(int)之前調用removeDialog(int)。覆蓋onPrepareDialog()是最好的方法,但使用removeDialog的工作,它更容易。