如何在Dialog的子类中启动Activity()?

时间:2010-11-25 12:36:18

标签: android

我有一个扩展Dialog类的子类,似乎我无法使用 startActivity()函数在这个子类中启动一个新的Activity,它扩展了Dialog类,如何解决它?

如何在Dialog子类中启动新的Activity? (在我的自定义对话框子类中,我有 一个按钮,当按下时,我想有一个新的活动开始。)

3 个答案:

答案 0 :(得分:4)

startActivityContext的方法。

您可以致电Dialog.getContext()来检索Context的{​​{1}}。

答案 1 :(得分: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);
   }
}

答案 2 :(得分:1)

您仍然可以在非活动上下文中调用startActivity,但您必须通过添加FLAG_ACTIVITY_NEW_TASK标记将其启动到新任务中。

这确实有一些后果,所以我宁愿尝试在该对话框中使用Activity,例如使用实际活动启动对话框,而不是getApplicationContext()或诸如此类。

否则,没有骰子。

有关任务的详情,请参阅http://developer.android.com/guide/topics/fundamentals.html#acttask