我有一个导航抽屉项目,我只是从“创建新项目”修改
下面是我用来显示所选片段的代码的一部分:
private void selectItem(int position) {
mCurrentSelectedPosition = position;
if (mDrawerListView != null) {
mDrawerListView.setItemChecked(position, true);
}
if (mDrawerLayout != null) {
mDrawerLayout.closeDrawer(mFragmentContainerView);
}
if (mCallbacks != null) {
mCallbacks.onNavigationDrawerItemSelected(position);
}
Fragment fragment = null;
FragmentTransaction transaction = getFragmentManager().beginTransaction();
FragmentManager fm = getFragmentManager();
switch (position) {
case 0:
fragment = fm.findFragmentByTag("fragmentDashboard");
if (fragment == null){
fragment = new Dashboard();
transaction.replace(R.id.container, fragment, "fragmentDashboard");
transaction.addToBackStack(null);
transaction.commit();
}else{
transaction.remove(getFragmentManager().findFragmentByTag("fragmentDashboard"));
transaction.commit();
fm.popBackStack();
}
break;
case 1:
fragment = fm.findFragmentByTag("fragmentExpenses");
if (fragment == null) {
fragment = new Expenses();
transaction.replace(R.id.container, fragment, "fragmentExpenses");
transaction.addToBackStack(null);
transaction.commit();
}else{
transaction.remove(getFragmentManager().findFragmentByTag("fragmentExpenses"));
transaction.commit();
fm.popBackStack();
}
break;
default:
break;
}
}
编辑:这个问题用导航抽屉保存片段状态是我解决问题的最接近的方法,但答案太简单了。。我对Android开发还很陌生。有人能帮忙吗?
描述:
而不是代码:
private void selectItem(int position) {
mCurrentSelectedPosition = position;
if (mDrawerListView != null) {
mDrawerListView.setItemChecked(position, true);
}
if (mDrawerLayout != null) {
mDrawerLayout.closeDrawer(mFragmentContainerView);
}
if (mCallbacks != null) {
mCallbacks.onNavigationDrawerItemSelected(position);
}
Fragment fragment = null;
FragmentTransaction transaction = getFragmentManager().beginTransaction();
FragmentManager fm = getFragmentManager();
switch (position) {
case 0:
fragment = fm.findFragmentByTag("fragmentDashboard");
if (fragment == null){
fragment = new Dashboard();
transaction.replace(R.id.container, fragment, "fragmentDashboard");
transaction.addToBackStack(null);
transaction.commit();
}else{
transaction.remove(getFragmentManager().findFragmentByTag("fragmentDashboard"));
transaction.commit();
fm.popBackStack();
}
break;
case 1:
fragment = fm.findFragmentByTag("fragmentExpenses");
if (fragment == null) {
fragment = new Expenses();
transaction.replace(R.id.container, fragment, "fragmentExpenses");
transaction.addToBackStack(null);
transaction.commit();
}else{
transaction.remove(getFragmentManager().findFragmentByTag("fragmentExpenses"));
transaction.commit();
fm.popBackStack();
}
break;
default:
break;
}
}
使用此项:
private void selectItem(int position) {
mCurrentSelectedPosition = position;
if (mDrawerListView != null) {
mDrawerListView.setItemChecked(position, true);
}
if (mDrawerLayout != null) {
mDrawerLayout.closeDrawer(mFragmentContainerView);
}
if (mCallbacks != null) {
mCallbacks.onNavigationDrawerItemSelected(position);
}
Fragment fragment = null;
FragmentTransaction transaction = getFragmentManager().beginTransaction();
FragmentManager fm = getFragmentManager();
switch (position) {
case 0:
fragment = fm.findFragmentByTag("fragmentDashboard");
if (fragment == null){
fragment = new Dashboard();
transaction.add(R.id.container, fragment, "fragmentDashboard");
transaction.addToBackStack(null);
transaction.commit();
}else{
transaction.show(getFragmentManager().findFragmentByTag("fragmentDashboard"));
transaction.commit();
fm.popBackStack();
}
break;
case 1:
fragment = fm.findFragmentByTag("fragmentExpenses");
if (fragment == null) {
fragment = new Expenses();
transaction.add(R.id.container, fragment, "fragmentExpenses");
transaction.addToBackStack(null);
transaction.commit();
}else{
transaction.show(getFragmentManager().findFragmentByTag("fragmentExpenses"));
transaction.commit();
fm.popBackStack();
}
break;
default:
break;
}
}
查看开发者网站了解更多信息
我正在android应用程序中使用导航抽屉<每个片段都包含从internet获取数据并显示在自定义列表中的异步任务。 这是选择片段的代码: 但当我在片段之间切换时,一个异步任务再次开始加载数据<那么如何保存片段的状态呢 我在stackoverflow上尝试了所有可能的解决方案 请帮帮我
你好,我有一个关于Android导航抽屉的问题。我在我的应用程序中包含了导航抽屉,一切都很顺利,但我想将图像添加到列表中的每个菜单中。 我是Android新手,所以如果有人能帮助我,我将不胜感激,这是导航抽屉的源代码 http://javatechig.com/android/navigation-drawer-android-example 这是我的WebViewFragments文件 这是我的
我对android比较陌生,我想在我的应用程序中添加一个导航抽屉,所以我添加了一个新的活动并选择导航抽屉活动 活动类 当我运行应用程序并尝试点击另一个项目时,什么都没有发生,它会保留在主片段上。到目前为止,我看到的大多数信息都是在3.6.3版本之前的旧信息,其他信息只是我到目前为止尝试过的工作——卸载并重新安装android studio——更新到最新的android studio(目前为4个)—
问题内容: 我想在使用Android的导航抽屉切换片段时保存片段的状态。如果该片段先前已加载,则不应刷新。可能吗? 问题答案: 要保持片段的状态,您必须在片段的内调用。它能做什么: 控制是否在活动重新创建期间保留片段实例(例如通过配置更改)。 这样可以保持活动重新创建的状态,但是在这种情况下,将不会重新创建活动,而是使用抽屉手动切换片段。在这种情况下,您不必在抽屉的click侦听器中创建新的片段,
我想在使用androids导航抽屉切换片段时保存片段的状态。如果片段先前已加载,则不应刷新。有可能吗?
我是android新手,我将设计这种对我来说很复杂的布局。这是主_活动的代码。xml文件: 基本上,我的主要活动中有一个导航抽屉和3个选项卡。这是一张照片: 一切按我的意愿进行,我很高兴。 当我点击导航抽屉项目时,我开始了一个新的意图来打开一个新的活动,这很好,但抽屉当然会消失(因为新活动没有抽屉)。我想把抽屉一直放在屏幕上。 为了把抽屉放在屏幕上,我想我可以把上面XML的TabLayout作为一