我有4個活動。從家庭活動中,您可以導航到另外3個人。該應用程序在每個視圖上都有聲音和一個按鈕來使聲音靜音。當我從家庭活動中打開3件活動中的一件時,intent.putExtra等會傳送「無聲或無聲」值...當我在家庭活動中靜音時,它可以正常工作,但是怎麼能家庭活動知道我是否在3種活動中的一種中做出了改變,並且使用後退按鈕導航回來時靜音和靜音。這是否是覆蓋後退按鈕的正確方法?傳送回數據
謝謝你的幫助!
我有4個活動。從家庭活動中,您可以導航到另外3個人。該應用程序在每個視圖上都有聲音和一個按鈕來使聲音靜音。當我從家庭活動中打開3件活動中的一件時,intent.putExtra等會傳送「無聲或無聲」值...當我在家庭活動中靜音時,它可以正常工作,但是怎麼能家庭活動知道我是否在3種活動中的一種中做出了改變,並且使用後退按鈕導航回來時靜音和靜音。這是否是覆蓋後退按鈕的正確方法?傳送回數據
謝謝你的幫助!
回答你的問題,你會想開始每個活動的結果。假設你有 A - > B - > C - > D每個都會被啓動以獲得結果。然後,您可以在完成任何活動之前設置結果。這方面的例子可以在here找到。
但是,我想我知道一個更簡單的方法。糾正我,如果我錯了,但聲音是否靜音或適用於整個應用程序?如果是這樣,只需在首選項中設置一個布爾值,然後在每個活動中檢查它。你可以這樣做是這樣的:
擺在首選項變量:
Boolean shouldBeep = true;
//inside the mute/unmute button listener(or whatever)
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("shouldBeep", shouldBeep);
editor.commit();
然後檢索值:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean shouldBeep = settings.getBoolean("shouldBeep", false);
最靈活的方式是爲子活動在發生更改時發送廣播意圖,然後在所有活動中使用onReceive。
另一種方法是使用SharedPreferences存儲狀態。
你有很多選擇。
1.您可以start the other activities for result當您回到主應用程序時,請檢查返回的活動。
2.Actually設置機器人音量在第二活動靜音等
mAudioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
mAudioManager.setStreamMute(AudioManager.STREAM_MUSIC, true);
,然後檢查在主音量。
3.發送消息並使用Handler進行處理,以防萬一您擁有不同的線程。
希望這會有所幫助。
這聽起來像應用程序狀態,我會說這屬於活動之外,而不是從一個傳遞到另一個。最簡單的方法是有一個靜態類來存儲你的應用程序狀態(或其中的一部分)。有很多方法可以做到這一點,但這可能是最簡單的。如果你使用靜態類,你可以設置並從任何你想要的活動中獲取這些信息。這裏有一個例子
public class AudioPreferences {
private static boolean isMuted = false;
public static boolean isMuted() {
return isMuted;
}
public static boolean setMuted(boolean muted) {
isMuted = muted;
return isMuted;
}
public static boolean toggleMuted() {
isMuted = !isMuted;
return isMuted;
}
}
其他選項是這些信息存儲在SharedPreferences,自定義應用程序類,或共享的單,你可以從一個依賴容器(評論,如果你想澄清上述任何)解決。
謝謝! 簡單而高效:) 對不起,我沒有得到這個自己^^ – Alrick