从非活动开始活动
我有Activity
班。从非活动开始活动
public class A extends Activity
{
}
然后我有一个类不是活动,但我希望它启动活动A
。
public class B
{
public B()
{
Intent I = new Intent(null, A.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
}
的代码是从拿这个问题,这应该工作:Calling startActivity() from outside of an Activity? 然而,当我运行它,我从来没有从我的第一个活动改为活动A
。我究竟做错了什么?我是否应该倾听A
中的FLAG_ACTIVITY_NEW_TASK
?
像这样的东西应该工作:B类的
public class B {
Context context;
public B(Context context) {
this.context = context;
}
public void startNewActivity(String str) {
try {
Intent i = new Intent(context, Class.forName(str));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
使用案例:
B b = new B(A.this);
b.startNewActivity("MainActivity");//the "MainActivity" is the className of the java class
注意我发现这样奇怪和矫枉过正。
如果这行'A.class'可以是更通用的,可以用于其他活动,那么我可以使用它。也许使用'context.class'(这可能会失败)。 – 2014-09-05 03:08:14
谢谢,这段代码太棒了! – 2014-09-05 03:36:37
@MikeJohn欢迎您。 – 2014-09-05 03:36:55
你必须有一个上下文来启动一个活动。如果你有一个上下文,那么你可以从几乎每一个点开始活动 – 2014-09-05 02:57:46
你在调用'startActivity()'吗? – 2014-09-05 02:58:05
startActivity不能在'B'内部调用,因为'B'不是一个Activity。 @非法参数你能解释上下文吗? – 2014-09-05 02:58:54