2012-11-19 4 views
0

나는 4 가지 활동을 가지고 있습니다. 가정 활동에서 3 가지 다른 활동으로 이동할 수 있습니다. 응용 프로그램에는 각보기에 소리와 음을 소거하는 단추가 있습니다. 가정 활동에서 3 가지 활동 중 하나를 열면 "음소거 여부"값이 intent.putExtra 등으로 전송됩니다. 가정 활동에서 음을 소거하면 제대로 작동하지만 어떻게 작동합니까? 홈 - 액티비티 알아보기 - 뒤로 버튼으로 돌아 가면 3 가지 활동 중 하나에서 변경했거나하지 않고 사운드를 음소거하고 사운드를 음소거합니까? 뒤로 버튼을 무시하는 것이 올바른 방법입니까?뒤로 내비게이션 데이터 전송

도움 주셔서 감사합니다.

답변

1

질문에 대한 대답으로 결과에 대한 각 활동을 시작하는 것이 좋습니다. A -> B -> C -> D가 각각 결과를 위해 시작될 것이라고 가정 해보십시오. 그런 다음 활동을 완료하기 전에 결과를 설정할 수 있습니다. 이것의 예는 here입니다.

그러나 나는 훨씬 간단한 방법을 알고 있다고 생각합니다. 내가 틀렸다면 나를 바로 잡아라. 그러나 소리가 음소거 되든지 아니면 전체 앱에 적용되지 않는가? 그렇다면 환경 설정에서 부울 값을 설정하고 각 활동에서 부울 값을 확인하십시오. 이 같은 수행 할 수

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    boolean shouldBeep = settings.getBoolean("shouldBeep", false); 
+0

감사합니다. 간단하고 효율적인 :) 죄송합니다. 나 혼자 힘으로이 문제에 관해서 ^^ – Alrick

1

가장 유연한 방법은 세부 평가 활동에 대한 것 : 그 값을 검색 한 후

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

그리고 :

은의 환경 설정에서 변수를 넣으려면 변경이있을 때 방송 인 텐트를 보내고 모든 활동에서 onReceive를 사용하십시오.

다른 방법으로 SharedPreferences를 사용하여 상태를 저장하는 것입니다.

0

많은 옵션이 있습니다.
1.You는 start the other activities for result 일 수 있으며 주 응용 프로그램으로 돌아 가면 어떤 활동이 반환되었는지 확인할 수 있습니다.
2.Actually는

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

같이 제 활성을 소거하고 메인의 음량을 검사 로이드 음량 설정.
3. 다른 스레드가있는 경우에 대비하여 메시지를 보내고 Handler을 사용하여 처리하십시오.
희망이 도움이됩니다.

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이를 저장할 수있는 예입니다, 사용자 정의 응용 프로그램 클래스, 또는 종속성 컨테이너 (당신이 이들의에 대한 설명을 원하신다면 코멘트)에서 해결할 수있는 공유 싱글.

관련 문제