Я собираюсь использовать кнопку «Домой» (значок приложения на панели действий) в качестве кнопки «Назад». Я заставил его работать, но не так, как я хотел.
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, который показывает подробное содержимое, у меня есть этот код, чтобы включить навигацию для кнопки «Домой»:
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. Приведенный выше код этого не делает, и каждый раз, когда я нажимаю «Домой» на панели действий, он запускает MainActivity с нуля.
Может ли кто-нибудь помочь мне с этим, пожалуйста? Я также должен сказать, что я новичок, поэтому я был бы признателен, если бы ответы были подробными.