Панель действий вверх навигации с фрагментом и активностью
Я собираюсь использовать кнопку "Домой" (значок на панели действий) в качестве кнопки "Назад" Я получил его на работу, но не так, как я хотел.
My 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, который показывает подробное содержание, у меня есть этот код, чтобы включить навигацию для кнопки home:
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);
}
И, наконец, в манифесте я использовал приведенный ниже код, чтобы представить MainActivity как часть LessonDetailActivity:
<activity
android:name=".LessonDetailActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.MainActivity" />
</activity>
Я хочу, чтобы кнопка "Домой" при навигации вверх работала аналогично кнопке "Назад", чтобы при ее нажатии она переходила в режим MainActivity, каким он был до открытия LessonDetailActivity. Приведенный выше код этого не делает, и каждый раз, когда я нажимаю Home на панели действий, он запускает MainActivity с нуля.
Может ли кто-нибудь помочь мне с этим, пожалуйста? Я также должен сказать, что я новичок, поэтому я был бы признателен, если бы ответы были подробными.