2012-01-31 2 views

답변

5

SharedPreferences을 사용하면 응용 프로그램이 닫힌 상태에서도 상태를 유지하는 CheckBox를 구현할 수 있습니다.

  • 사용자가 CheckBox를 선택/선택 취소하면 Shared 상태가됩니다. Preferences.
  • 사용자가 활동할 때마다. 이전에 저장된 값을 Shared-Preferences에서 읽고 확인란의 상태를 설정합니다.

다음은 앱이 종료 된 경우에도 확인란의 상태 저장을위한 예제 코드입니다.

public class TestActivity extends Activity{ 
    CheckBox checkBox = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     checkBox = (CheckBox) findViewById(R.id.my_check_box); 
     boolean isChecked = getBooleanFromPreferences("isChecked"); 
     Log.i("start",""+isChecked); 
     checkBox.setChecked(isChecked); 
     checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton view, boolean isChecked) { 
       Log.i("boolean",""+isChecked); 
       TestActivity.this.putBooleanInPreferences(isChecked,"isChecked"); 
      } 
     }); 
    } 
    public void putBooleanInPreferences(boolean isChecked,String key){ 
     SharedPreferences sharedPreferences = this.getPreferences(Activity.MODE_PRIVATE); 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putBoolean(key, isChecked); 
     editor.commit();   
    } 
    public boolean getBooleanFromPreferences(String key){ 
     SharedPreferences sharedPreferences = this.getPreferences(Activity.MODE_PRIVATE); 
     Boolean isChecked = sharedPreferences.getBoolean(key, false); 
     return isChecked;  
    } 
} 

main.xml에

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <CheckBox 
     android:id="@+id/my_check_box" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 

</LinearLayout> 
1

당신의 최선의 선택 앱에서 SharedPreferences을 구현하고 그 상태를 저장하는 것입니다. 앱을 실행하면 환경 설정에서 상태를 검색하고 확인란을 선택/선택 취소합니다.

1

응용 프로그램 상태를 기억하기 위해, 당신은 onSaveInstanceState()onRestoreInstanceState() 방법을 사용할 수 있도록 할 것입니다 있는지 확인 (추가 정보를 원하시면이 answer 참조) 상자를 선택하거나 선택 취소해야합니다.

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    savedInstanceState.putBoolean("IsCheckboxChecked", _myCheckbox.isChecked()); 
} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    _myCheckbox.setChecked(savedInstanceState.getBoolean("IsCheckboxChecked")); 
} 
+0

내가 원하는 것을 얻기에 충분한 위의 코드는 무엇입니까? 내 체크 박스에 어떻게 적용해야합니까? – hectichavana

+1

'_myCheckbox.setChecked'를 보면 상태를 체크 박스에 적용합니다. – Leandros

+0

앱에 해당 스 니펫을 적용했지만 확인란의 상태가 저장되지 않습니다 – hectichavana

0

이것은 비슷한 게시물입니다. SO Qn 거기에서 같은 아이디어를 사용할 수 있습니다. 희망이 도움이됩니다.

0

가장 좋은 방법은 SharedPreference를 사용하는 것입니다.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.yourlayout); 

    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 

    CheckBox checkBox = (CheckBox) findViewById(R.id.checkbox_id); 
    checkBox.setChecked(sharedPreferences.getBoolean("isChecked", false)); 
} 

당신을 희망 : 당신의 활동이이 같은 SharedPreference에 그 값을 확인할 수 있습니다 시작할 때 다음

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPreferences.edit(); //opens the editor 
editor.putBoolean("isChecked", true); //true or false 
editor.commit(); //saves it in shared preference 

을 : sharedpreference하는

저장 현재 상태를 : 당신은 다음과 같이 사용할 수 있습니다 이 정보를 사용할 수 있습니까

+0

첫 발췌 문장에서 나는 그 중 하나의 방법을 만들어야합니까? – hectichavana

+0

체크 상자의 상태를 저장하는 메소드를 만드십시오. 따라서 사용자가 확인하거나 선택을 취소 할 때마다 현재 상태가 저장됩니다. 그런 다음 마지막으로 알려진 상태가 선택되었는지 또는 선택 취소되었는지 확인하면 활동의 어느 위치에서나 확인할 수 있습니다. – Fergers

관련 문제