0

4 つのアクティビティがあります。ホーム アクティビティから、他の 3 つのアクティビティに移動できます。アプリケーションにはサウンドと、各ビューにサウンドをミュートするためのボタンがあります。ホームアクティビティから3つのアクティビティの1つを開くと、「ミュートされているかどうか」の値がintent.putExtraなどによって転送されます...ホームアクティビティでサウンドをミュートすると、正常に動作しますが、どうすればホーム アクティビティは、3 つのアクティビティのいずれかで変更を行ったかどうかを認識し、サウンドをミュートし、[戻る] ボタンで戻るときにサウンドもミュートしますか? 戻るボタンをオーバーライドする正しい方法ですか?

ご協力ありがとうございました!

4

4 に答える 4

1

最も柔軟な方法は、変更が行われたときにサブアクティビティがブロードキャスト インテントを送信し、すべてのアクティビティで onReceive を使用することです。

別の方法は、SharedPreferences を使用して状態を保存することです。

于 2012-11-19T20:43:34.293 に答える
1

あなたの質問に答えて、結果のために各活動を開始したいと思うでしょう。A -> B -> C -> D があり、それぞれが結果のために開始されるとします。その後、アクティビティを終了する前に結果を設定できます。この例はここにあります。

しかし、私はもっと簡単な方法を知っていると思います。間違っている場合は訂正してください。ただし、サウンドがミュートされているかどうかは、アプリ全体に適用されますか? その場合は、設定でブール値を設定し、各アクティビティでそれを確認してください。次のように行うことができます。

変数を設定に入れるには:

  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);
于 2012-11-19T20:42:33.067 に答える
1

これはアプリケーションの状態のように聞こえますが、これは、あるアクティビティから別のアクティビティに渡されるのではなく、アクティビティの外部に属していると言えます。最も簡単な方法は、アプリケーションの状態 (またはその一部) を格納する静的クラスを用意することです。これを行うには多くの方法がありますが、おそらくこれが最も簡単です。静的クラスを使用すると、任意のアクティビティからこの情報を設定および取得できます。これが例です

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、カスタム Application クラス、または依存関係コンテナーから解決できる共有シングルトンに格納することです (これらのいずれかについて明確にしたい場合はコメントしてください)。

于 2012-11-19T20:52:07.503 に答える
0

多くのオプションがあります。
1.結果のために他のアクティビティを開始し、メインアプリケーションに戻ったときに、アクティビティが何を返したかを確認できます。
2.実際には、次のような2番目のアクティビティでAndroidの音量をミュートに設定します

mAudioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
mAudioManager.setStreamMute(AudioManager.STREAM_MUSIC, true); 

メインの音量を確認します。
3. メッセージを送信し、異なるスレッドがある場合に備えてHandlerを使用して処理します。
お役に立てれば。

于 2012-11-19T20:43:35.927 に答える