我将使用主页按钮(操作栏应用程序图标)作为后退按钮。我让它工作,但不是我想要的方式。
我的 MainActivity 是一个活动,其中包含 (1) 一个显示类别列表的抽屉。还有一个片段,显示抽屉中选择的类别中的项目列表。
单击列表中的项目时,将启动一个新的 DetailActivity 以显示详细信息。
问题从这里开始:当我按下后退按钮时,它从 DetailActivity 返回到 MainActivity,就像单击项目以显示详细信息之前一样。这就是我所期望的。但是,当使用主页按钮作为向上导航时,它会启动 MainActivity,就像我再次打开应用程序一样。不显示之前显示的列表。
我在开发人员文档中阅读了我必须使用的片段: .add(detailFragment, "detail") 和 .addToBackStack() 然后提交。
但是我想在 add(---,"---") 中添加什么。那我该怎么用呢?!
这是我的代码:
该方法是显示内容的 MainActivity:
public void refreshDisplay(Context context, View view, String category, int i) {
List<Lesson> lessonByCategory = datasource.findByCategory(category, i);
final ListView lv = (ListView) view.findViewById(R.id.listView);
final ArrayAdapter<Lesson> adapter = new LessonListAdapter(context, lessonByCategory);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
Log.i(LOGTAG, "onListItemClick called");
ArrayAdapter<Lesson> m_adapter = adapter;
// get the Lesson object for the clicked row
Lesson lesson = m_adapter.getItem(position);
Intent intent = new Intent(MainActivity.this, LessonDetailActivity.class);
intent.putExtra(".model.Lesson", lesson);
intent.putExtra("isStared", isStared);
startActivityForResult(intent, LESSON_DETAIL_ACTIVITY);
}
});
}
在显示详细内容的 LESSON_DETAIL_ACTIVITY 中,我有以下代码来启用主页按钮的向上导航:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// I have some other cases here
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
最后在 Manifest 中,我使用下面的代码来介绍 MainActivity 作为 LessonDetailActivity 的父类:
<activity
android:name=".LessonDetailActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.MainActivity" />
</activity>
我希望主页按钮作为向上导航的行为类似于后退按钮,以便在单击它时将我带到 MainActivity,就像在打开 LessonDetailActivity 之前一样。上面的代码并没有这样做,每次我在操作栏中按 Home 时,它都会从头开始 MainActivity。
有人可以帮我吗?我还应该说我是新手,所以如果答案很详细,我将不胜感激。