2013-09-24 2 views
0

나는 Android 앱을 개발 중이며,이 앱은 남녀별로 두 가지로 나뉩니다. 사용자는 자신이 원하는 활동의 부분을 선택합니다. 예를 들어 사용자를 남자로 선택하면 남자 파트를 선택하고, 여자라면 여자 버튼을 클릭하고 여자 페이지가 나타납니다.앱이 공유 환경 설정 값을 기억하지 못합니다.

사용자를 괴롭히지 않으려면 확인란을 선택하고 다음에 내 choise를 기억한다고 말했습니다. 매우 일반적인 일 ...

나는 이것을 위해 공유 환경 설정을 사용하려고했지만 작동하지 않습니다. 앱이 열릴 때마다 질문을합니다. 여기 코드는 다음과 같습니다

내가 질문을 물어 활동

View checkBoxView = View.inflate(this, R.layout.activity_menu, null); 
    CheckBox checkBox = (CheckBox) checkBoxView.findViewById(R.id.checkbox); 
    checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if(isChecked){ 
       SharedPreferences.Editor prefEditor = getPreferences(MODE_PRIVATE).edit(); 
       prefEditor.putString("Remember", "Checked"); 
       prefEditor.commit(); 
      } 
     } 
}); 

질문을하거나

SharedPreferences sp = getPreferences(MODE_PRIVATE); 
        String str1 = sp.getString("Remember", ""); 
        String str2 = sp.getString("Hacc", ""); 

        if (str1 == "") { 
         Intent menuIntent = new Intent(
           "com.uygulama.hacc.MenuActivity"); 
         startActivity(menuIntent); 
        } 
        else{ 
         if(str2 == "Hacc"){ 
          Intent mainIntent = new Intent(
            "com.uygulama.hacc.HaccActivity"); 
          startActivity(mainIntent); 
         } 
         else{ 
          Intent mainIntent = new Intent(
            "com.uygulama.hacc.UmreActivity"); 
          startActivity(mainIntent); 
         } 
        } 

내가 전에 선택한 activty을 열하기로 결정 스플래시 활동 Android의 새로운 기능이므로 어떤 도움도 받으실 수 있습니다.

답변

1

공유 환경 설정을 작성하고 읽는 데 2 ​​가지 다른 활동을 사용하고 있습니다. getPreferencesActivity에서 호출하면 해당 활동과 관련된 대화 상대가 열립니다. 에 환경 설정에 대한 액세스를 변경해보십시오 : 문자열을 비교할 때

// read 
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
String str1 = settings.getString("Remember", ""); 

// write 
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
SharedPreferences.Editor editor = settings.edit(); 
editor.putString("Remember", "Checked"); 
editor.commit(); 

또한, equals를 사용

str2.equals("Hacc") 

그렇지 않으면 당신이 참조를 비교합니다.

+0

getDefaultSharedPreferences (이) - (그것을 위해 당신이 콘텐츠 공급자가 필요합니다이 응용 프로그램 패키지에서 설정 데이터를 공유 할 수는 없습니다.) 나던. getDefaultSharedPreferences (getApplicationContext());가 될 수 있습니다.좋아, 편집 했어. 내가 다시 시도하자. – user2870

+0

그래, 나도 알아 챘다. 내 대답을 편집했습니다. – Szymon

+0

아직 아무것도 읽지 않습니다 .. – user2870

0

첫 번째 클래스에서 절약하면 SharedPreferences 안에 네임 스페이스가 없습니다.

이 같은 시도 :

SharedPreferences prefs = getSharedPreferences("AppName", MODE_PRIVATE); 
prefs.edit().putBoolean("Remember", true).commit(); 

와 함께 검색 : 당신은 활동 사이에 환경 설정을 공유하는 대신 getPreferences의 공유 환경 설정을 사용한다

SharedPreferences sPrefs = getSharedPreferences("AppName", 0); 
Boolean bCheck = sPrefs.getBoolean("Remember", false); 
1

. 안드로이드 문서에서

: http://developer.android.com/reference/android/app/Activity.html

활동 지속 상태는 검색 및 활동과 관련된 이름/값 쌍의 세트를 수정할 수 있도록 방법 getPreferences (INT)로 관리됩니다. 이 여러 응용 프로그램 구성 요소 (활동, 수신자, 서비스, 공급자)간에 공유되는 환경 설정을 사용하려면 기본 Context.getSharedPreferences() 메소드를 사용하여 특정 이름으로 저장된 환경 설정 개체 을 검색 할 수 있습니다. ;