从非活动类调用主要活动

时间:2012-04-12 13:31:51

标签: android android-activity

我一直在尝试许多不同的方法并获得空指针异常。

场景:如果表中的行数为0,则Activity1在启动时加载并调用Activity2。现在我希望它在行数为0时返回到Activity1,并且该调用将从db处理程序中调用。 在数据库处理程序类中:

    if(num ==0){
        Activity1 bs1 = new Activity1();
        Context context = bs1.getApplicationContext();
        Intent intent = new Intent();//
        intent.setClass(context, Activity1.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);

    }

Activity1 onCreate()

    int num = db.numOfRows();
    if(num==0){
        setContentView(R.layout.main);
    } else {    
        startActivity(new Intent(this, Activity2.class));//
    }

Activity2 onCreate()

        super.onCreate(savedInstanceState);
        setContentView(R.layout.moreprojects);
        populateRows();

提前致谢。

3 个答案:

答案 0 :(得分:3)

您不应该自己实例化Activity类。尝试以这种方式启动它:

Intent i = new Intent(context, MainActivity.class);
context.startActivity(i);

答案 1 :(得分:1)

您不使用构造函数来调用新活动。见下文:

Context context = bs1.getApplicationContext();
Intent intent = new Intent();
intent.setClass(context, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //required to launch from non-activity
context.startActivity(intent);

答案 2 :(得分:0)

您无法从尚未成为活动的上下文启动活动。在你的情况下,没有解决方案。如果用户想要

,您可以考虑发送带有PendingIntent的通知来启动您的活动