1

这是我的代码: Activity1 (main): 检查数据库是否有任何行。如果没有,请加载主视图。如果它至少有 1 个启动 Activity2

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

活动 2:加载使用数据库信息填充表行的 moreprojects 视图。

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

非活动 dbhandler:包含所有数据库内容(活动 1 中提到的 db)。现在,在 Activity2 上,您可以删除调用以下方法的行。在那个 if(num==0) 中,我想让 Activity2 调用 Activity1。Activity1 是允许创建项目的屏幕。

public void deleteContact(int id) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_blah, KEY_ID + " = ?",
            new String[] { String.valueOf(id) });
    int num = numOfRows();
    Log.d("Testing","Number of rows: "+num);

    if(num ==0){
        //go back to Activity1
    }
    db.close();
}

我希望这是有道理的。

我一直在尝试多种不同的事情,例如:在 activity2 中创建一个方法,该方法确实完成();... 但这没有任何作用。它似乎只是重新加载 Activity2。

请帮忙!

4

4 回答 4

2

由于您使用 startActivity 而不是 startActivityForResult 打开 activity2 ,因此调用完成应该返回:

public void deleteContact(int id) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_blah, KEY_ID + " = ?",
            new String[] { String.valueOf(id) });
    int num = numOfRows();
    Log.d("Testing","Number of rows: "+num);

    if(num ==0){
        finish();
    }
    db.close();
}

这假设 deleteContact 在 Activity2

编辑 :

调用完成只会调用 Activity1 的 onResume 方法,我猜
要返回 Activity1 并重新启动它,您可以:

finish();
startActivity(new Intent(this, Activity1.class));

查看android的activity生命周期

于 2012-04-12T19:08:07.513 回答
0

当您想完成活动 A 并返回活动 2 时,只需调用 finish(); 在 A 中,这将起作用

于 2012-04-12T19:03:15.613 回答
0

只需调用完成您的活动。比返回给调用者

于 2012-04-12T19:03:55.923 回答
0
finish();

应该做的伎俩。如果那是“重新加载活动 2”,那么我会在两个活动中添加一些日志语句,以打印出你的num变量。我的猜测是,Activity2 中的 num 以某种方式为 0,但是当 Activity1 获得焦点时, num 以某种方式 > 0,然后由于您的 if 语句而重新启动 Activity2。

于 2012-04-12T19:05:08.440 回答