Android - 从活动的片段之间的导航
我正在制作一个具有导航抽屉的应用程序。在这些片段中可以去其他活动。如果我点击后退按钮,我想返回到导航抽屉的当前片段。例如,我有一个片段消息,然后单击指定聊天中的片段,以便我会看到详细信息。然后我想再回到消息片段。我正在考虑使用片段后台堆栈,但我不确定是否有正确的方法来做到这一点。这是我的代码,我如何在导航抽屉中创建碎片。Android - 从活动的片段之间的导航
Fragment fragment = null;
Class fragmentClass = null;
android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
switch (menuItem.getItemId()) {
case R.id.nav_profile:
fragmentClass = HomeFragment.class;
break;
case R.id.nav_inbox:
fragmentClass = ChatFragment.class;
break;
case R.id.nav_map:
fragmentClass = MapFragment.class;
break;
case R.id.nav_dog_breed:
fragmentClass = DogBreedsFragment.class;
break;
case R.id.nav_reminder:
fragmentClass = ReminderFragment.class;
break;
case R.id.nav_favourite_dog_breeds:
fragmentClass = FavouriteDogBreedsFragment.class;
break;
case R.id.nav_help:
Intent intent = new Intent(MainActivity.this, HelpActivity.class);
startActivity(intent);
finish();
break;
case R.id.nav_settings:
Intent intent2 = new Intent(MainActivity.this, SettingsActivity.class);
startActivity(intent2);
finish();
break;
case R.id.nav_logout:
((FirebaseApplication) getApplication()).signOutUser(this);
break;
default:
fragmentClass = HomeFragment.class;
}
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {
Log.e(TAG, "Failed to obtain the fragment");
}
if (fragment != null && fragmentClass != null) {
fragmentManager.beginTransaction().replace(R.id.content_main, fragment).commit();
}
例如,在ChatDetailActivity我需要去ChatFragment
@Override
public void onBackPressed() {
// here I would need to return to the current fragment
}
感谢您的任何意见
片段堆栈中是要走的路。将你的片段替换事务添加到backstack中,所以当你按下后退按钮时,你将返回到你所在的片段。
fragmentManager.beginTransaction()
.replace(R.id.content_main, fragment)
.addToBackStack(null)
.commit();
如果你想启动从抽屉式导航的活动后返回到相同的片段,则需要在启动活动之前保存当前片段的名称(以及可能的状态)。当导航抽屉活动恢复时,请检查任何保存的状态并将其恢复。
如果我理解正确,我必须在主要活动内保存片段的名称,其中是抽屉式导航器。我怎样才能做到这一点? – user3637775
@ user3637775你可以使用'onSaveInstanceState()' – Rohan
分享一些代码 –