2012-01-09 27 views
0

我有一個alertdialog,我知道我將在多個類中使用,儘管我的應用程序並且可以告訴我寧願將它放在自己的類中,並在需要時調用它。它是一個簡單的文本字段和確定/取消按鈕。我總是想一些文本傳遞到它,用戶點擊確定後,我想一個變量來用更新的文本字符串在多個類中使用單個對話框代碼

請告訴我在轉換這段代碼的最佳方式,因此它可以被其他人使用,其中

更新
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
final View layout = inflater.inflate(R.layout.dialog_layout, null); 

editTextfield = (EditText) layout.findViewById(R.id.comment_text); 
editTextfield.setText(text); 

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setView(layout); 
builder.setTitle(R.string.title); 

builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 

     text = editTextfield.getText().toString(); 

      removeDialog(DIALOG); 

}); 
builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 

      removeDialog(DIALOG); 

    } 
}); 

AlertDialog dialog = builder.create(); 
return dialog; 

感謝您的時間

回答

1

你應該看看這個教程它表明你到底怎麼做你想什麼去做。你必須擴展Dialog類。

Custom Dailog class

1

我做到了。創建一個ConfirmDialog類,在其構造函數中創建AlertDialog.Builder,並將show調用委託給其自己的show方法。只需傳遞parent參數(調用活動),並使用它來完成所有資源收集。

在該類上有一個String變量,並有一個getter來獲取它。

然後,你可以這樣做(從任何活動):

.... 
final ConfirmDialog myDialog = new ConfirmDialog(initialText); 
myDialog.show(); 
.... 

而當你需要的文本

myDialog.getText(); 

編輯:更多細節

public class ConfirmDialog { 
    private final Context parent; 
    private final AlertDialog dialog;  
    private String text; 

    public ConfirmDialog(Context parent) { 
     this.parent = parent; 

     final EditText editTextfield = (EditText) layout.findViewById(R.id.comment_text); 
     editTextfield.setText(text); 

     this.dialog = new AlertDialog.Builder(parent) 
         .setView(LayoutInflater.from(parent).inflate(R.layout.dialog_layout, null)); 
         .setTitle(R.string.title); // you can also pass the title if you want a different one each time you instanciate the dialog 
         .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           setText(editTextfield.getText().toString()); 
           removeDialog(DIALOG); 
          } 
         }); 
         .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           removeDialog(DIALOG); 
          } 
         }) 
         .create(); 
    } 

    public void setText(String text) { 
     this.text = text; 
    } 

    public String getText() { 
     return text; 
    } 

    public void show() { 
     dialog.show(); 
    } 
} 

(我在StackOverflow編輯器中快速編寫了代碼,因此可能會出現語法錯誤)

+0

請您詳細介紹一下。一點困惑。之前沒有消耗過其他類。謝謝 – 2012-01-09 15:46:35

+0

編輯我的答案,快速實施我的意思。根據您的需求定製。 – Guillaume 2012-01-09 15:57:16

+0

{removeDialog(DIALOG);}行不是錯誤的,因爲你沒有通過任何東西,或者我再次感到困惑。謝謝 – 2012-01-09 15:59:41