Java 从非活动开始活动

Java 从非活动开始活动,java,android,Java,Android,我有一个活动课程 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); } } 代码取自此问题,该问题应适用于: 然而,当我运行它时,我从不从我的第一个活动

我有一个
活动
课程

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);
    }
}
代码取自此问题,该问题应适用于:
然而,当我运行它时,我从不从我的第一个活动更改为活动
A
。我做错了什么?我是否应该在
A
中收听
标记活动\u新任务

类似的内容应该可以:

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 b = new B(A.this);
    b.startNewActivity("MainActivity");//the "MainActivity" is the className of the java class

注意我发现这样做既不明智又过分。

你必须有一个上下文才能开始一项活动。如果您有一个上下文,那么您几乎可以从您调用的每个点开始活动
startActivity()
?startActivity不能在
B
内部调用,因为
B
不是活动@IllegalArgument你能解释上下文吗?@MikeJohn你可以在你的b类中使用startActivity,但你需要一个有效的上下文。背景。开始触觉(意图)@IllegalArgument如何获取此有效上下文?这是对a类的引用吗?如果这一行
a.class
可以更通用,适用于其他活动,我可能可以使用它。可能使用
context.class
(这可能会失败。)