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 に答える