ปัญหาการหยุดชั่วคราว/ดำเนินการต่อของ Android ToggleButton

ฉันมีปัญหากับ ToggleButton ของฉัน

ครั้งแรกที่ฉันคลิกมันจะปิดเสียงสื่อ ครั้งที่สอง มันจะเปิดเสียงพวกเขา หากต้องการบันทึกสถานะของ 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

person Giulio Tedesco    schedule 26.01.2014    source แหล่งที่มา
comment
คุณได้ลองส่งออกบันทึกในวิธี onresume และหยุดชั่วคราวเพื่อดูว่าในขณะที่ปิดเสียงอยู่ ค่าที่คุณบันทึกไว้ ยังคงเป็นค่าที่คุณออกด้วยหรือไม่   -  person Lena Bru    schedule 26.01.2014
comment
คุณได้ชุดมายังไง?   -  person Lena Bru    schedule 26.01.2014
comment
บันเดิล: บันเดิลคงที่ส่วนตัว บันเดิล = บันเดิลใหม่ ();   -  person Giulio Tedesco    schedule 26.01.2014
comment
คุณบันทึกไว้ในสถานะของกิจกรรมเมื่อกิจกรรมถูกทำลายหรือไม่?   -  person Lena Bru    schedule 26.01.2014
comment
ด้วยเมธอด onSaveInstanceState? ไม่ ฉันไม่ :/   -  person Giulio Tedesco    schedule 26.01.2014
comment
เมื่อกิจกรรมของคุณถูกทำลาย และคุณไม่ได้บันทึกสถานะไว้เป็นการคงอยู่ เมื่อคุณกลับมาที่กิจกรรมนั้น oncreate จะทำงานอีกครั้ง และบันเดิลของคุณว่างเปล่า ดังนั้นตัวเลือกสำหรับคีย์ ToggleButton จึงว่างเปล่า จึงส่งกลับค่าเท็จ และของคุณ ปุ่มสลับยังคงปิดเสียง   -  person Lena Bru    schedule 26.01.2014


คำตอบ (1)


เมื่อกิจกรรมของคุณถูกทำลาย และคุณไม่ได้บันทึกสถานะไว้เป็นการคงอยู่ เมื่อคุณกลับมาที่กิจกรรมนั้น oncreate จะทำงานอีกครั้ง และชุดรวมของคุณว่างเปล่า ดังนั้นตัวเลือกสำหรับคีย์ "ToggleButton" จึงว่างเปล่า จึงส่งกลับค่าเท็จ และปุ่มสลับของคุณยังคงปิดเสียงอยู่

person Lena Bru    schedule 26.01.2014
comment
ฉันเพิ่มเมธอด saveInstanceState เช่นนั้น: beetxt.com/qUM แต่ก็ยังใช้งานไม่ได้: ( - person Giulio Tedesco; 26.01.2014
comment
วางไว้ในการตั้งค่าที่ใช้ร่วมกัน สถานะของอินสแตนซ์ที่บันทึกไว้คือการย้ายไปมาระหว่างกิจกรรมต่างๆ - person Lena Bru; 26.01.2014
comment
onPause SharedPreferences.Editor editor = getSharedPreferences(my_settings,0).edit(); editor.putBoolean(ToggleButton,true/** whicheverState it should be here*/).commit(); จากนั้น onResume SharedPreferences prefs = getSharedPreferences(my_settings,0); บูลีน ToggleButtonState = prefs.getBoolean (ToggleButton จริง); - person Lena Bru; 26.01.2014