使用ASL的25.0BottomNavigationView
我遇到了一些问题,比如以编程方式保存选定项(或其索引)和选定项。
我正在使用BottomNavigationView,下面是应用程序在屏幕旋转时正确运行的代码。首先,我创建了一个变量来保存所选菜单的idprivate int saveState
通过在变量中获取所选菜单id来保存id值
@Override
protected void onResume() {
super.onResume();
navigation.setSelectedItemId(saveState);
}
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
saveState = navigation.getSelectedItemId();
}
然后在onCreate方法中检索id的值(如果可用)
if(savedInstanceState!=null){
navigation.setSelectedItemId(saveState);
}else{
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.content, MapFragment.newInstance());
transaction.commit();
}
同意尼古拉的说法!
我也创造了自己的要点
要在旋转后保存状态,您需要添加到活动中:
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putInt("opened_fragment", bottomNavigation.getCurrentItem());
super.onSaveInstanceState(outState);
}
在设置BottomNavigationView
之后,进入onCreate
方法:
final defaultPosition = 0;
final int bottomNavigationPosition = savedInstanceState == null ? defaultPosition :
savedInstanceState.getInt("opened_fragment", defaultPosition);
bottomNavigation.setCurrentItem(bottomNavigationPosition);
这个要点的最大优点是:侦听器的种类很少,它会显示您之前的选择位置,即使位置是以编程方式设置的,侦听器也会做出反应。一切都是用链接编写的,如果需要可以使用。
不幸的是,BottomNavigationView
在这个阶段缺少很多功能。
你的问题真的很有趣,我写了这个扩展的BottomNavigationView
,它保留了状态,在你的例子中,保存了最后选择的项目。
下面是代码的要点
此扩展包括:
让我们等到ASL开发者解决这个问题。
实现在竖屏的NavigationController中push一个横屏的UIViewController,模拟器测试兼容5.0、6.0系统。实现程序中手动旋转屏幕的效果。 [Code4App.com]
在屏幕旋转后,虽然我在super.onCreate(null);,中传递null,但我得到了object返回的nullPointerException异常。我知道在传递savedInstanceState=null的同时必须销毁并重新创建活动,这意味着活动应该在旋转后开始,因为它是第一次开始,为什么在旋转后会出现此异常? onCreate()代码段,其中名为historyText的对象 Logca
我正在使用新的android。支持设计小装置。来自支持库的BottomNavigationView。如何从代码中设置当前选择?我意识到,在旋转屏幕后,选择被更改回第一项。当然,如果有人能告诉我如何在“暂停”功能中“保存”底部导航视图的当前状态,以及如何在“恢复”功能中恢复它,这也会有所帮助。 谢谢
我想在模拟器上测试手机的旋转,我看到我们必须使用CtrlF11的所有地方,但它只旋转模拟器的图像,不会启动配置更改事件或重新绘制活动。 下面是我用CtrlF11得到的: 那么,我必须用什么来模拟真实的旋转呢?
我有3个片段(片段Home、片段A、片段B和片段C)。应用程序首次运行时将显示片段主页(在Mainactivity中设置)。从导航绘图项可以选择每个片段。每个选定项目都将显示详细信息片段。 我在处理数据和保留片段时遇到问题: (1)。当我选择一个片段(例如片段a)时,将显示片段a的页面。但是当我旋转设备时,为什么我的片段返回到片段主页而不是停留在当前片段??如何处理 (2)。在片段B中,我在Gri
我有一个应用程序小部件,当它更新时,获取具有与小部件匹配的维度的图像,并将该图像放入(通过)。它工作得很好。 但是对于支持主屏幕旋转的设备(我不是说基于设备方向的