我将使用主页按钮(操作栏应用程序图标)作为后退按钮。我得到了它的工作,但不是我想要的方式。
我的MainActivity是一个活动,它包含(1)显示类别列表的抽屉。还有一个片段,显示抽屉中所选类别中的项目列表。
单击列表中的项目时,将启动新的DetailActivity以显示详细信息。
这里开始出现问题: 当我按下Back按钮时,从DetailActivity返回到MainActivity,就像点击项目以显示细节之前一样。这就是我的期望。但是,当使用主页按钮作为向上导航时,它会启动MainActivity,就像我再次打开应用程序一样。没有显示之前显示的列表。
我在开发人员文档中读到了我必须使用的片段:.add(detailFragment,“detail”)和.addToBackStack()然后提交。
但是我想添加添加(---,“---”)。然后我应该如何使用它?!
这是我的代码:
该方法是显示内容的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>
我希望Home按钮作为向上导航,其行为类似于后退按钮,这样当单击它时,它会将我带到MainActivity,就像打开LessonDetailActivity之前一样。上面的代码没有这样做,每次我在操作栏中按Home都会从头开始启动MainActivity。
有人可以帮我这个吗? 我也应该说我是新人,所以如果答案详细,我会很感激。