-
[13] SharedPreferencesDevelpment/Android Using Sample 2020. 9. 13. 21:37
1. SharedPreferences
Activity
1234567891011121314151617181920212223242526public class MainActivity extends AppCompatActivity {SharedPreferences pref;int num;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);pref = PreferenceManager.getDefaultSharedPreferences( MainActivity.this );num = pref.getInt("save", 0);}// onCreate()@Overrideprotected void onDestroy() {super.onDestroy();SharedPreferences.Editor edit = pref.edit();edit.putInt("save", num);edit.commit();}}cs * getDefaultSharedPreferences() : 이전에 저장된 값 불러오기.
* getIntint("save", 0) : key 값이 save 인 정보를 불러온다. ( default : 0 )
* onDestroy(), onPause() 등 종료시에 호출 되는 메서드에서 값을 저장.
2. Tutorial ( SharedPreferences )
Layout (Main)
12345678910111213141516171819202122232425262728293031323334353637<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.sin.sample_2.SubActivity"android:background="#aaf"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="tutorial"android:textSize="30dp"android:layout_centerInParent="true"/><Buttonandroid:id="@+id/ok_btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="OK"android:layout_alignParentBottom="true"/><CheckBoxandroid:id="@+id/check"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Tutorial 다시보지 않기"android:layout_alignParentBottom="true"android:layout_alignParentRight="true"/></RelativeLayout>cs * 상태를 저장할 CheckBox 값에 의해 tutorial을 다시 볼지를 정하는 예제.
Activity (Main)
123456789101112131415161718192021222324252627282930313233343536373839404142434445public class MainActivity extends AppCompatActivity {Button ok_btn;CheckBox check;SharedPreferences pref;boolean isTutorial;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);pref = PreferenceManager.getDefaultSharedPreferences( MainActivity.this);isTutorial = pref.getBoolean("tutorial", false);if(isTutorial)startIntent();ok_btn = (Button)findViewById(R.id.ok_btn);check = (CheckBox)findViewById(R.id.check);ok_btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {SharedPreferences.Editor editor = pref.edit();editor.putBoolean("tutorial", check.isChecked());editor.commit();startIntent();}});}//onCreate()private void startIntent(){Intent intent = new Intent(MainActivity.this, SubActivity.class);intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);startActivity(intent);finish();}}cs * key값이 tutorial 인 boolean 값을 저장한다.
Layout (Sub)
123456789101112131415161718192021<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_sub"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.sin.sample_2.SubActivity"><Buttonandroid:id="@+id/tutorial_btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="tutorial 다시보기"android:layout_alignParentBottom="true"/></LinearLayout>cs * tutorial 다시보지 않기를 체크후 닫았을 경우, 다시 tutorial을 표시 할수 있도록 하기 위해 추가.
Activity (Sub)
12345678910111213141516171819202122232425262728public class SubActivity extends AppCompatActivity {Button tutorial_btn;SharedPreferences pref;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_sub);pref = PreferenceManager.getDefaultSharedPreferences(SubActivity.this);tutorial_btn = (Button)findViewById(R.id.tutorial_btn);tutorial_btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent(SubActivity.this, MainActivity.class);SharedPreferences.Editor editor = pref.edit();editor.putBoolean("tutorial", false);editor.commit();startActivity(intent);}});}// onCreate()}cs * Intent로 화면 전환만 할경우, 기존에 저장된 값으로 인해 tutorial이 표시 되지 않음.
* 다시 보기를 할경우 key값이 tutorial 인 boolean 값을 false로 하여 다시 표시 하도록 변경.
3. 결과화면
'Develpment > Android Using Sample' 카테고리의 다른 글
[14] Canvas (0) 2020.09.13 [12] 앱종료 확인 (Handler 응용) (0) 2020.09.13 [11] Handler (0) 2020.09.13 [10] Intent (0) 2020.09.13 [9] Rating Bar (0) 2020.09.13