【问题标题】:Android ToggleButton pause/resume issueAndroid ToggleButton 暂停/恢复问题
【发布时间】:2014-01-26 21:50:23
【问题描述】:

我的切换按钮有问题。

当我第一次点击它时,它会静音媒体声音。第二次,它取消静音。为了保存 ToggleButton 的状态,我使用了 onPause/onResume 方法。但问题是,如果我启动活动,然后我按下切换按钮,我暂停它,当我最终恢复它时,切换按钮不再工作,应用程序保持静音。 (即使保存状态)

我的活动部分:

public void onToggleClicked(View view) {
    // Is the toggle on?
    boolean on = ((ToggleButton) view).isChecked();


    if (on) {
         AudioManager aManager=(AudioManager)getSystemService(AUDIO_SERVICE);
            aManager.setStreamMute(AudioManager.STREAM_MUSIC, true);

    } else {
        AudioManager aManager=(AudioManager)getSystemService(AUDIO_SERVICE);
        aManager.setStreamMute(AudioManager.STREAM_MUSIC, false);


    }

}


@Override
public void onPause() {
    super.onPause();
    bundle.putBoolean("ToggleButtonState", ToggleButton.isChecked());

}

@Override
public void onResume() {
    super.onResume();
    ToggleButton.setChecked(bundle.getBoolean("ToggleButtonState",false));
}

我知道我可能应该在某个地方使用另一个暂停/恢复代码,你能帮忙吗?谢谢:)

这是我打开应用程序时的日志,打开按钮的活动,单击按钮,暂停活动,恢复,再次单击按钮并再次暂停活动:

01-01 04:19:55.004: D/OpenGLRenderer(10766): Enabling debug mode 0

01-01 04:19:55.113: I/ActivityManager(10766): Timeline: Activity_idle id: android.os.BinderProxy@41df9820 time:9273361

01-01 04:20:00.902: I/ActivityManager(10766): Timeline: Activity_launch_request id:com.example.appquiz time:9279155

01-01 04:20:01.121: I/ActivityManager(10766): Timeline: Activity_idle id: android.os.BinderProxy@41f99298 time:9279369

01-01 04:20:05.840: I/ActivityManager(10766): Timeline: Activity_idle id: android.os.BinderProxy@41df9820 time:9284092

01-01 04:20:09.988: I/ActivityManager(10766): Timeline: Activity_launch_request id:com.example.appquiz time:9288234

01-01 04:20:10.168: I/ActivityManager(10766): Timeline: Activity_idle id: android.os.BinderProxy@41fbf7f0 time:9288414

01-01 04:20:20.566: I/ActivityManager(10766): Timeline: Activity_idle id: android.os.BinderProxy@41df9820 time:9298814

【问题讨论】:

  • 您是否尝试过在 onresume 和 pause 方法中输出日志,以查看在卡住静音时,您保存的值仍然是您退出的值?
  • 如何获得捆绑包?
  • Bundle: 私有静态Bundle bundle = new Bundle();
  • 在activity销毁的时候,你会保存在activity的状态吗?
  • 当你的活动被销毁,并且你没有以某种持久性保存状态,当你回到它时,oncreate 再次运行,你的包是空的,所以“ToggleButton”的选项键为空,因此返回 false,并且您的切换按钮保持静音

标签: android toggle


【解决方案1】:

当您的活动被销毁并且您没有以某种持久性保存状态时,当您返回到它时,oncreate 再次运行,并且您的包为空,因此“ToggleButton”键的选项为空,因此返回 false,并且您的切换按钮保持静音

【讨论】:

  • 我添加了这样的 savedInstanceState 方法:beetxt.com/qUM 但它仍然不起作用:(
  • 放入共享首选项,保存的实例状态是在activity之间移动
  • onPause SharedPreferences.Editor editor = getSharedPreferences("my_settings",0).edit(); editor.putBoolean("ToggleButton",true/**这里应该是哪个状态*/).commit();然后 onResume SharedPreferences prefs = getSharedPreferences("my_settings",0); boolean ToggleButtonState = prefs.getBoolean("ToggleButton",true);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 2014-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多