0

我有 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()

4

1 回答 1

1

在我myToggleBtn.setChecked(false);onDestroy()到之后onStop(),问题得到了解决。谢谢。

于 2013-06-12T06:31:00.050 回答