Android为什么switchCompat.setChecked(true)从BackStack返回后无法正常工作

时间:2016-05-23 06:27:56

标签: android switchcompat

我在片段switchCompat.setChecked(true)中执行onViewCreated(...)。第一次运行良好但从BackStack返回后无法正常工作。

日志显示switchCompat.isChecked() 为真,但 SwitchCompat 的用户界面状态已关闭。有一个名为 isChecked 的parms是如此 OnCheckedChangeListener 中的 onCheckedChanged 也是 false

谁能告诉我为什么?

片段

  @Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    ......other code......

    initialSnooze();

}


private void initialSnooze() {
    mSwitchSnooze.setChecked(mAlarm.isSnooze());
    Log.d("TAG", "initialSnooze: "+mAlarm.toString()+" "+mSwitchSnooze.isChecked());
}

切换到下一个Fragemnt

 private void switchFragment(Fragment fragment,String tag){
        FragmentTransaction fragmentTransaction=getSupportFragmentManager().beginTransaction();
        fragmentTransaction.addToBackStack(tag);        
        fragmentTransaction.replace(android.R.id.content, fragment, tag);
        fragmentTransaction.commit();
    }

从BackStack返回的后退按钮

    @Override
public void onBackPressed() {
    //回退栈中有Fragment
    int count = getSupportFragmentManager().getBackStackEntryCount();
    if (count == 0) {
        super.onBackPressed();
    } else {
        getSupportFragmentManager().popBackStack();
    }
}

**在第二支部队**

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        mAlarm = getArguments().getParcelable(PARAM_ALARM);
    }
    mAlarm.setSnooze(true);
}

1 个答案:

答案 0 :(得分:3)

调用initialSnooze();在onResume()