2010-11-25 61 views
2

我有個擴展Dialog類的子類,看來我不能用 startActivity()函數啓動一個新的Activity,在這個子類裏面延伸Dialog類,該如何解決呢?如何在Dialog的子類中啓動Activity()?

如何在對話框子類中啓動新的活動? (在我的自定義對話框子類中,我有一個按鈕,當按下時,我想要一個新的Activity啓動)。

回答

4

startActivityContext的方法。

您可以通過致電Dialog.getContext()來檢索DialogContext

+0

不,這並不能幫助。 startActivity()只能在擴展Activity的類內部調用,我的類擴展了Dialog,並且我想在startActivity的side這個子類的Dialog類中... – Mellon 2010-11-25 12:56:18

1

您仍然可以在非活動上下文中調用startActivity,但您必須通過添加FLAG_ACTIVITY_NEW_TASK標誌將其啓動到新任務中。

雖然這確實有一些分歧,所以我寧願嘗試在該對話框中使用Activity,例如通過使用實際活動啓動對話框,而不是使用getApplicationContext()或其他。

否則,沒有骰子。

欲瞭解更多有關的任務,看到http://developer.android.com/guide/topics/fundamentals.html#acttask

2

我可以看到你調用的對話框?

進出口猜測,在某種活動中,你有這個對話框顯示,並根據選擇,你啓動一個新的活動。

如果您使用的是嵌套類,您可以通過使用startActivity(currentClassName.this,targetClass.class)來完成此操作,但由於您有自己的類擴展對話框,所以我會嘗試在對話框的構造函數中包含上下文類並基於此啓動新活動,這樣,可以使用其「父」活動上下文從對話類中啓動該活動。

我沒有試過這個,所以它可能不起作用,但給它一個鏡頭。

所以從調用該對話框的活動,這將是像成才

MyDialog d = new MyDialog(currentClassName.this); 

從您的MyDialogClass內:

public class MyDialog{ 
    private Context c; 

    public MyDialog(Context c){ 
     this.c=c; 
    } 

    public startActivityFromDialog(){ 
     startActivity(c,something.class); 
    } 
} 
相關問題