Setting만들기

1 분 소요

Setting Activity및 PreferenceFragment

앱의 Setting을 위해 Activity를 새로 만들고, preference조절을 위한 Fragment를 삽입할 수 있다. 이 때 PreferenceFragment를 상속받는 CustomPreferenceFragemet를 사용한다.

    import android.os.Bundle;
    import android.preference.PreferenceFragment;
    import android.support.v7.app.AppCompatActivity;

    public class SettingsActivity extends AppCompatActivity {

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

        public static class CustomPreferenceFragment extends PreferenceFragment {

        }
    }

더불어 menifesto에서 Setting Activity의 parent activity도 지정해준다.

App bar에 Setting 아이콘 추가하기

app bar에 버튼을 추가하기 위해 메뉴 xml파일을 만들어야 한다. res/menu폴더를 만들고, main.xml파일을 추가하자.

 <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        tools:context="com.example.android.(앱이름).(액티비티명)">
        //메뉴 아이템 추가 
        <item
            android:id="@+id/action_settings"
            android:title="@string/settings_menu_item" />
    </menu>

액티비티에 메뉴 아이템 세팅하기

원래 액티비티에서 세팅 창이 나오게 하기 위해서 몇가지 method를 override하자.

  • onCreateOptionsMenu

메뉴 아이콘을 달아주는 메쏘드다.

    @Override
    
    public boolean onCreateOptionsMenu(Menu menu) {
         
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

세팅 아이콘을 클릭하면 여러 개의 메뉴가 나올 수 있다. 각 메뉴를 클릭했을 때 어떤 액션을 할 지에 대해 다음 method로 정의한다.

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            Intent settingsIntent = new Intent(this, SettingsActivity.class);
            startActivity(settingsIntent);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

댓글남기기