从非活动开始活动

问题描述:

我有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

+1

你必须有一个上下文来启动一个活动。如果你有一个上下文,那么你可以从几乎每一个点开始活动 – 2014-09-05 02:57:46

+1

你在调用'startActivity()'吗? – 2014-09-05 02:58:05

+0

startActivity不能在'B'内部调用,因为'B'不是一个Activity。 @非法参数你能解释上下文吗? – 2014-09-05 02:58:54

像这样的东西应该工作: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 

注意我发现这样奇怪和矫枉过正。

+0

如果这行'A.class'可以是更通用的,可以用于其他活动,那么我可以使用它。也许使用'context.class'(这可能会失败)。 – 2014-09-05 03:08:14

+0

谢谢,这段代码太棒了! – 2014-09-05 03:36:37

+0

@MikeJohn欢迎您。 – 2014-09-05 03:36:55