我有一个扩展Dialog
类的子类,似乎我无法使用
startActivity()
函数在这个子类中启动一个新的Activity,它扩展了Dialog
类,如何解决它?
如何在Dialog子类中启动新的Activity? (在我的自定义对话框子类中,我有 一个按钮,当按下时,我想有一个新的活动开始。)
答案 0 :(得分:4)
startActivity
是Context
的方法。
您可以致电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