我有 2 个片段。
FirstFragment只有一个按钮。当用户按下按钮时,将显示SecondFragment。
两个片段都在后台。因此,当显示SecondFragment时,如果用户按下物理后退按钮,则会显示FirstFragment。
此时一切正常。
现在,在SecondFragment布局上,我添加了一个ToggleButton
:
<ToggleButton
android:id="@+id/my_toggle"
android:checked="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOn="@string/on"
android:textOff="@string/off"
/>
我的SecondFragment.java:
public class SecondFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle){
super.onCreateView(inflater, container, savedInstanceState);
//My Toggle Button
myToggleBtn.setOnCheckedChangeListener(
new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){
Log.v("*TOGGLE CHECK CHANGED*",String.valueOf(isChecked));
if(isChecked){
//DO SOME THING
}else{
//DO SOMETHING ELSE
}
}
});
return inflater.inflate(R.layout.second_layout, null);
}
...
@Override
public void onDestroy(){
super.onDestroy();
//Set my toggle button to unchecked status,when leave this fragment
myToggleBtn.setChecked(false);
}
}
切换按钮在我的SecondFragment上工作正常。但是,如果现在我按下切换按钮进行检查(因此它更改为检查状态),然后按物理后退按钮返回到 FirstFragment(调用 onDestroy() 将切换按钮设置为未检查状态),然后来到SecondFragment 再次,令人惊讶的是,此时ToggleButton
,在运行时检查了,我从 LogCat 中注意到,OnCheckedChangeListener()
在运行时也调用了,为什么?
PS:LogCat显示离开SecondFragment时调用了onDestroy()