2015-09-24 38 views
2

我有一個常見的活動,名爲commonActivity(),我有我的常見警報對話框。在我的第二個活動myActivity()中,我有一個方法myMethod1(),在第三個活動中,我有一個方法爲myMethod2(),我需要調用警報對話框的正面按鈕。是否可以在我的所有活動中使用通用警報對話框並點擊肯定按鈕,觸發活動的相應方法?如何處理來自android中另一個活動的警報對話框的正面按鈕上的事件?

+0

我不知道它是否可能,如果是的話,你可能不應該這樣做,你試圖用什麼來實現? – xanexpt

+0

我只想保留一個通用的警報對話框並在所有活動中使用它。 –

+0

創建工具類並創建一個靜態方法來生成alertdialog。那麼在任何你想使用它的課程中都可以調用它。 –

回答

5

請在commonActivity一個接口(例如:onPosClick與方法的onClick()),並在該活動中,你應該聲明一個變量公共靜態onPosClick mI的; 然後在你的代碼

dialog.setPositiveButton(R.string.dialog_ok, new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
      mI.onClick(); 
    } 
}); 

最後在其他活動中,你Impliment commonActivity的界面,也許喜歡這裏

onCreate(){ 
    .... 
    commonActivity.mI = new onPosClick(){ 
     @Override 
     void onClick(){ 
     //do something 
     } 
    } 
} 
1

使用此並使方法public static

dialog.setPositiveButton(R.string.dialog_ok, new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
      YourActivity.yourMethod1(); 
    } 
}); 
+0

不,但我需要調用myActivity()中的常用警報對話框,然後在同一活動myActivity()中實現其方法myMethod1()。我希望你能得到我的問題。 –

2

我覺得最優雅的方式做到這一點是通過創建監聽器。

例聽衆:

public interface YourListener{ 
    void func(); 
} 

然後在你的活動,你創建這個監聽器和覆蓋方法FUNC()。

public class YourActivity implements YourListener{ 
    @Override 
    void func(){ 
    //do stuff 
    } 
} 

然後在您的活動中使用此對話框註冊偵聽器並在onClick方法內執行方法。

dialog.setPositiveButton(R.string.dialog_ok, new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int id) { 
     listener.func(); 
    } 
}); 
+0

那不是優雅:P你不應該從其他活動調用函數 – xanexpt

+0

很明顯,每個人都應該避免使用其他活動的方法,但作爲一種解決問題的方法是可以接受的:) –

0

「我只是想保持一個共同的警告對話框,並在所有使用它活動「。

如果這是您的目的,我認爲您應該創建一個類似Utils的類,並創建一個公共靜態方法來接收上下文並顯示對話框

public static void showDialog(final Context context) 
{ 
    try 
    { 
     Dialog dialog = new Dialog(activity); 
     ... 
     dialog.show(); 

    }catch(Exception e){} 
} 
相關問題