Android 为什么从 BackStack 返回后 switchCompat.setChecked(true) 不工作

标签 android switchcompat

我在 FragmentonViewCreated(...) 中执行了 switchCompat.setChecked(true)。它第一次运行良好但不是从 BackStack 返回后工作。

日志显示 switchCompat.isChecked()true,但是 SwitchCompat 的 UI 状态是关闭的,很奇怪OnCheckedChangeListeneronCheckedChanged的参数isChecked也是false

谁能告诉我为什么?

fragment

  @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());
}

切换到下一个 fragment

 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();
    }
}

**在第二个 fragment 中**

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

最佳答案

调用initialSnooze();在 onResume() 中

关于Android 为什么从 BackStack 返回后 switchCompat.setChecked(true) 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37383921/

相关文章:

Android - 延迟加载 ListView 的问题

java - SwitchCompat setTextOn() 和 setTextOff() 在运行时不起作用

android - 如何在android中自定义开关

android - 具有不同状态图像的自定义 switchcompat

java - 在 Android 中动态创建多个 ListView

android - 根据应用程序模式加载首选项

Android,更改应用程序 :theme value of SwitchCompat programmatically

Android switchcompat禁用文本点击

Android,无法使用 Retrofit 和 RxJava 2 构建应用程序

java - 中间进度不适用于在 Gingerbread 上运行的 ActionBarSherlock