コンピュータクワガタ

かっぱのかっぱによるコンピュータ関連のサイトです

Androidアプリ入門 No.50 PreferencesActivityのActivityから設定項目の取得

PreferencesActivity

Activityから設定項目の取得

Preferenceの最後として、Activityから設定項目の取得を確認する。設定画面は先のままとする。
まず、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"
    >
    <Button
        android:id="@+id/button"
        android:text="設定画面"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/checkText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/ringtoneText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/listText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

次に、MainActivity.javaを以下に示す。

package sample.at;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
    private SharedPreferences prefs;
    private TextView checkText;
    private TextView ringtoneText;
    private TextView editText;
    private TextView listText;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        checkText = (TextView) findViewById(R.id.checkText);
        ringtoneText = (TextView) findViewById(R.id.ringtoneText);
        editText = (TextView) findViewById(R.id.editText);
        listText = (TextView) findViewById(R.id.listText);

        prefs = PreferenceManager.getDefaultSharedPreferences(this);
        setPreference();

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(getApplicationContext(), ConfActivity.class));
            }
        });
    }

    @Override
    public void onResume() {
        super.onResume();
        setPreference();
    }

    private void setPreference() {
        checkText.setText("check: " + prefs.getBoolean("check", false));
        ringtoneText.setText("ringtone: " + prefs.getString("ringtone", "[NO DATA]"));
        editText.setText("edit: " + prefs.getString("edit", "[NO DATA]"));
        listText.setText("list: " + prefs.getString("list", "[NO DATA]"));
    }
}

実行結果は以下のようになる。

基本的にはgetDefaultSharedPreferencesメソッドで設定ファイルが取得できので、それを利用するだけでよい。onResumeについては後述する。