Android菜单选项复选框在方向更改修复中未选中
在我的应用程序中,当在溢出菜单中选中选项时,方向会改变,它们将被取消选中。有办法解决这个问题吗? 我知道,Android菜单选项复选框在方向更改修复中未选中,android,orientation,android-checkbox,Android,Orientation,Android Checkbox,在我的应用程序中,当在溢出菜单中选中选项时,方向会改变,它们将被取消选中。有办法解决这个问题吗? 我知道,onSavedInstance应该可以在这里帮助我,但我不知道如何在我的情况下实现它 下面是一个如何在主活动中处理溢出复选框的示例 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override
onSavedInstance
应该可以在这里帮助我,但我不知道如何在我的情况下实现它
下面是一个如何在主活动中处理溢出复选框的示例
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case R.id.subtract_option:
if (item.isChecked()){
item.setChecked(false);
subtractMode = false;
} else{
item.setChecked(true);
subtractMode = true;
}
return true;
default:
return super.onMenuItemSelected(featureId, item);
那么在这种情况下,我将如何实现savedinstancestate上的
呢?这与Android如何处理方向变化有关。它实际上会终止并重新启动您的活动。有两种方法可以解决这个问题
1) 实现onSaveInstanceState,将所有状态写入对象(包括复选框的值),并实现onRestoreInstanceState以反转该过程
2) 添加android:configChanges=“方向”。这将停止覆盖行为。如果您有单独的横向和纵向布局,它还将中断布局的自动重新加载
如果你的方向没有单独的布局,我推荐路线2。如果你这么做了,而且你的应用程序很简单,我建议你选择路线1。如果你需要它,而你的应用程序又很复杂,那么你将陷入一个痛苦的世界。覆盖onSaveInstanceState方法
@Override
public void onSaveInstanceState( Bundle outState )
{
super.onSaveInstanceState( outState );
outState.putInt( "position", this.position );
}
在onCreateView上
if ( savedInstanceState != null )
{
int temp;
temp = savedInstanceState.getInt( "position", -1 );
Log.i( LOG_TAG, "temp....." + temp );
// do whatever you want
}
根据您的需要进行适当的更改。访问
他说使用onretainonconfigurationinstance()
方法来保存方向更改的数据。您的应用程序中是否有任何配置更改处理?“溢出”菜单的代码可能也很有用。您应该将复选框状态保存在onSavedInstanceState()中……不,我没有尝试下面的内容。因为我的帖子干涸了,我没有得到具体的答案,所以我用具体的代码发布了这篇文章,并将我过去的一篇文章标记为删除…@Axtn95我合并了这两个问题。但是,你不应该重复你的问题。请参阅以了解当您得不到答案时该怎么办。如果我发布了一些代码,您是否介意再帮我一点忙?我肯定必须实现onSaveInstanceState,但我的大脑无法处理如何在我的情况下实现它!你能再具体一点吗?我是一个noob,所以我需要帮助来实际实现我的代码。我应该在SaveInstanceState中输入什么?您可以保存复选框的最后状态。假设它已检查大于1,如果不大于0。现在在savedInstanceState.getInt(“位置”,-1)中;您将根据重新设置复选框的值来获取值我如何引用复选框状态?我使用onMenuItemSelected中的Item标记选中和取消选中选项,如何在onSaveInstanceState中执行类似操作?请容忍我,哈哈