Ch11 Listings


package com.syh;

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class FlightPreferenceActivity extends PreferenceActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.flightoptions);
    }
}

<?xml version="1.0" encoding="utf-8"?>
<!-- This file is /res/xml/flightoptions.xml -->
<PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android"
    android:key="flight_option_preference"
    android:title="@string/prefTitle"
    android:summary="@string/prefSummary">

  <ListPreference
    android:key="@string/selected_flight_sort_option"
    android:title="@string/listTitle"
    android:summary="@string/listSummary"
    android:entries="@array/flight_sort_options"
    android:entryValues="@array/flight_sort_options_values"
    android:dialogTitle="@string/dialogTitle"
    android:defaultValue="@string/flight_sort_option_default_value" />

</PreferenceScreen>

// This file is MainActivity.java
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.TextView;

public class MainActivity extends Activity {
    private TextView tv = null;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tv = (TextView)findViewById(R.id.text1);
        
        setOptionText();
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
       MenuInflater inflater = getMenuInflater();
       inflater.inflate(R.menu.mainmenu, menu);
       return true;
    }

    @Override
    public boolean onOptionsItemSelected (MenuItem item)
    {
       if (item.getItemId() == R.id.menu_prefs)
       {
           Intent intent = new Intent()
           	    	    .setClass(this, com.syh.FlightPreferenceActivity.class);
           this.startActivityForResult(intent, 0);
       }
       else if (item.getItemId() == R.id.menu_quit)
       {
            finish();
       }
       return true;
    }

    @Override
    public void onActivityResult(int reqCode, int resCode, Intent data)
    {
        super.onActivityResult(reqCode, resCode, data);
        setOptionText();
    }
    
    private void setOptionText()
    {
        SharedPreferences prefs = getSharedPreferences("com.syh_preferences", 0);
        String option = prefs.getString(
        	    	    this.getResources().getString(R.string.selected_flight_sort_option),
        	    	    this.getResources().getString(R.string.flight_sort_option_default_value));
        String[] optionText = this.getResources().getStringArray(R.array.flight_sort_options);
    	
        tv.setText("option value is " + option + " (" + 
        	    	    optionText[Integer.parseInt(option)] + ")");
    }
}

<?xml version="1.0" encoding="utf-8"?>
<!-- This file is /res/values/arrays.xml -->
<resources>
<string-array name="flight_sort_options">
    <item>Total Cost</item>
    <item># of Stops</item>
    <item>Airline</item>
</string-array>
<string-array name="flight_sort_options_values">
    <item>0</item>
    <item>1</item>
    <item>2</item>
</string-array>
</resources>

<?xml version="1.0" encoding="utf-8"?>
<!-- This file is /res/values/strings.xml -->
<resources>
    <string name="app_name">Preferences Demo</string>
    <string name="prefTitle">My Preferences</string>
    <string name="prefSummary">Set Flight Option Preferences</string>
    <string name="flight_sort_option_default_value">1</string>
    <string name="dialogTitle">Choose Flight Options</string>
    <string name="listSummary">Set Search Options</string>
    <string name="listTitle">Flight Options</string>
    <string name="selected_flight_sort_option">selected_flight_sort_option</string>
    <string name="menu_prefs_title">Settings</string>
    <string name="menu_quit_title">Quit</string>
</resources>

<?xml version="1.0" encoding="utf-8"?>
<!-- This file is /res/menu/mainmenu.xml -->
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_prefs"
    android:title="@string/menu_prefs_title"
    />
<item android:id="@+id/menu_quit"
    android:title="@string/menu_quit_title"
    />
</menu>

<?xml version="1.0" encoding="utf-8"?>
<!-- This file is /res/layout/main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    
<TextView android:text="" android:id="@+id/text1" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />

</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<!-- This file is AndroidManifest.xml -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.syh"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MainActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".FlightPreferenceActivity"
                  android:label="@string/prefTitle">
            <intent-filter>
                <action android:name="com.syh.intent.action.FlightPreferences" />
                <category android:name="android.intent.category.PREFERENCE" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="3" />

</manifest>

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="selected_flight_sort_option">1</string>
</map>

// CheckBoxPreferenceActivity.java

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class CheckBoxPreferenceActivity extends PreferenceActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.chkbox);
    }
}

<?xml version="1.0" encoding="utf-8"?>
<!-- This file is /res/xml/chkbox.xml -->
    <PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android"
                android:key="flight_columns_pref"
                android:title="Flight Search Preferences"
                android:summary="Set Columns for Search Results">
        <CheckBoxPreference
                android:key="show_airline_column_pref"
                android:title="Airline"
                android:summary="Show Airline column" />
        <CheckBoxPreference
                android:key="show_departure_column_pref"
                android:title="Departure"
                android:summary="Show Departure column" />
        <CheckBoxPreference
                android:key="show_arrival_column_pref"
                android:title="Arrival"
                android:summary="Show Arrival column" />
         <CheckBoxPreference
                android:key="show_total_travel_time_column_pref"
                android:title="Total Travel Time"
                android:summary="Show Total Travel Time column" />
        <CheckBoxPreference
                android:key="show_price_column_pref"
                android:title="Price"
                android:summary="Show Price column" />

</PreferenceScreen>

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <boolean name="show_total_travel_time_column_pref" value="false" />
    <boolean name="show_price_column_pref" value="true" />
    <boolean name="show_arrival_column_pref" value="false" />
    <boolean name="show_airline_column_pref" value="true" />
    <boolean name="show_departure_column_pref" value="false" />
</map>

// EditTextPreferenceActivity.java

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class EditTextPreferenceActivity extends PreferenceActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        addPreferencesFromResource(R.xml.packagepref);
    }

}

<?xml version="1.0" encoding="utf-8"?>
<!-- This file is /res/xml/packagepref.xml -->
<PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android"
                android:key="package_name_screen"
                android:title="Package Name"
                android:summary="Set package name">

        <EditTextPreference
                android:key="package_name_preference"
                android:title="Set Package Name"
                android:summary="Set the package name for generated code"
                android:dialogTitle="Package Name" />

</PreferenceScreen>

// RingtonePreferenceActivity.java

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class RingtonePreferenceActivity extends PreferenceActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.ringtone);
    }
}

<?xml version="1.0" encoding="utf-8"?>
<!-- This file is /res/xml/ringtone.xml -->
<PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android"
                android:key="ringtone_option_preference"
                android:title="My Preferences"
                android:summary="Set Ring Tone Preferences">
    <RingtonePreference
        android:key="ring_tone_pref"
        android:title="Set Ringtone Preference"
        android:showSilent="true"
        android:ringtoneType="alarm"
        android:summary="Set Ringtone" />
</PreferenceScreen>

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android"
                android:key="using_categories_in_root_screen"
                android:title="Categories"
                android:summary="Using Preference Categories">

    <PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android"
                android:key="meats_screen"
                android:title="Meats"
                android:summary="Preferences related to Meats">

        <CheckBoxPreference
                android:key="fish_selection_pref"
                android:title="Fish"
                android:summary="Fish is great for the healthy" />
        <CheckBoxPreference
                android:key="chicken_selection_pref"
                android:title="Chicken"
                android:summary="A common type of poultry" />
        <CheckBoxPreference
                android:key="lamb_selection_pref"
                android:title="Lamb"
                android:summary="Lamb is a young sheep" />

    </PreferenceScreen>
    <PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android"
                android:key="vegi_screen"
                android:title="Vegetables"
                android:summary="Preferences related to vegetable">
        <CheckBoxPreference
                android:key="tomato_selection_pref"
                android:title="Tomato "
                android:summary="It's actually a fruit" />
        <CheckBoxPreference
                android:key="potato_selection_pref"
                android:title="Potato"
                android:summary="My favorite vegetable" />

    </PreferenceScreen>

</PreferenceScreen>

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android"
                android:key="using_categories_in_root_screen"
                android:title="Categories"
                android:summary="Using Preference Categories">

    <PreferenceCategory
        xmlns:android="http://schemas.android.com/apk/res/android"
                android:key="meats_category"
                android:title="Meats"
                android:summary="Preferences related to Meats">

        <CheckBoxPreference
                android:key="fish_selection_pref"
                android:title="Fish"
                android:summary="Fish is great for the healthy" />
        <CheckBoxPreference
                android:key="chicken_selection_pref"
                android:title="Chicken"
                android:summary="A common type of poultry" />
        <CheckBoxPreference
                android:key="lamb_selection_pref"
                android:title="Lamb"
                android:summary="Lamb is a young sheep" />

    </PreferenceCategory>
    <PreferenceCategory
        xmlns:android="http://schemas.android.com/apk/res/android"
                android:key="vegi_category"
                android:title="Vegetables"
                android:summary="Preferences related to vegetable">
        <CheckBoxPreference
                android:key="tomato_selection_pref"
                android:title="Tomato "
                android:summary="It's actually a fruit" />
        <CheckBoxPreference
                android:key="potato_selection_pref"
                android:title="Potato"
                android:summary="My favorite vegetable" />

    </PreferenceCategory>

</PreferenceScreen>