我的片段中有一些ToggleButtons的麻烦。我有一个主要的活动,我加载一些我添加到BackStack的片段。
在其中一个片段中,我有一个列表视图,顶部有3个ToggleButtons。这些按钮具有可绘制的背景:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<shape android:shape="oval">
<solid android:color="@color/greenbutton" />
<stroke android:width="4dp" android:color="@color/actionBlueLight"/>
</shape>
</item>
<item android:state_checked="false">
<shape android:shape="oval">
<solid android:color="@color/greenbutton" />
</shape>
</item>
</selector>
当我按下其中一个按钮时,我会过滤我的ListView。我可以在我的列表中选择一个项目,它将启动另一个片段(也添加到后栈)。
我的问题是,当我按下后退按钮并使用我的ListView返回到片段时,按钮的背景不会更新。我是说我放了 在我的片段中:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstance) {
...
Log.d(TAG,"Green = "+buttonGreen.isChecked());
Log.d(TAG,"Orange = "+buttonOrange.isChecked());
Log.d(TAG,"Red = "+buttonRed.isChecked());
...
}
所有按钮似乎都未选中(来自isChecked()),但在切换到另一个片段之前检查的按钮仍然具有与state_checked =“true”相对应的背景。
我尝试使用invalidate()按钮在onCreateView中刷新它们,但它没有做任何事情。
答案 0 :(得分:0)
好吧,我终于设法通过强制取消我的Fragment的onStop()方法中的ToggleButtons来解决我的问题。这样我就确定当popBackStack()之后片段将被真实地加载时,默认背景不能是与state_checked =&#34相关联的那个;&#34;。
public void onStop () {
buttonGreen.setChecked(false);
buttonOrange.setChecked(false);
buttonRed.setChecked(false);
super.onStop();
}
它看起来像一个解决方法,我很希望理解为什么按钮状态显示为&#34;未选中&#34;在onCreateView()中,而drawable visible是&#34; checked&#34;的按钮。