【发布时间】:2016-07-30 05:22:01
【问题描述】:
我确定我错过了一些关于后退堆栈及其工作原理的信息,或者我只需要在此处添加几行,但我只是想让我的后退按钮功能正常工作。
Activity A 使用通过 Intent extra 传递的 ID 发出 API 请求以填充其字段(这在 onCreate 中完成)。 Activity B 是从 Activity A 打开的,但是在返回到 Activity A 时,intent 中没有 id,因此无法发出请求。
如何设置导航,以便在启动 Activity B 时保留创建 Activity A 的意图,并在按下后退按钮时重新发送?任何接近此的功能,如果更简单的话,也可能没问题。
到目前为止,当我开始 Activity A 时,我没有做任何特别的事情。 以下是我在 Activity B 中设置后退按钮的方式(以及在清单中将父 Activity 指定为 Activity A):
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar5);
setSupportActionBar(toolbar);
// Make sure there is a back button
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
感谢您提前提供的任何帮助。
我将我的 ID 附加到意图并启动 Activity A:
Intent detailsIntent = new Intent(context, ViewObjActivity.class);
detailsIntent.putExtra("objId", objId);
context.startActivity(detailsIntent);
我从 Activity A 的 onCreate 中的 Intent 中检索我的 ID:
// Get data from extras
Intent detailsIntent = getIntent();
mObjID = detailsIntent.getIntExtra("objId", -1);
修复
经过一番挖掘,我发现默认的后退按钮功能并不是那么好。通过使用以下内容覆盖处理程序,我能够避免存储 ID,因为没有调用 onCreate - 活动的先前状态已经存储。
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId()== android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
【问题讨论】:
-
id 是持久的吗? IE。是长期使用还是一次性使用?
-
@sihao 一次性使用。 Activity A 是来自后端的对象的详细信息视图
-
请发布相关代码,显示您从哪里获取 id 以及您在哪里设置它等。
-
@ShadabAnsari 如果说活动 A 是从一个意图开始的(因为它们都是)还不够,并且其中一个额外是一个名为“id”的 int extra,那么我会邮政编码
-
我需要看看你是如何获取你传递的 id - 它的声明和初始化。
标签: android android-intent android-navigation