gpt4 book ai didi

android - 手动返回上一个 Activity

转载 作者:行者123 更新时间:2023-11-29 22:08:55 29 4
gpt4 key购买 nike

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

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

Activity 2:加载用数据库信息填充表行的 moreprojects View 。

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

非 Activity dbhandler:包含所有数据库内容(Activity1 中提到的 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 中创建一个执行 finish();... 的方法,但这什么都不做。它似乎只是重新加载 Activity2。

请帮忙!

最佳答案

调用 finish自从您使用 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 中

编辑:

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

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

检查安卓的activity life cycle

关于android - 手动返回上一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10129965/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com