• Uncategorized
  • 0

PAB2018-M9-SI-39-04-M.ZAHID SYAFNEL

9.1: Preferensi Bersama

Tugas 1. Menjelajahi HelloSharedPrefs

1.1 Buka dan Jalankan Proyek HelloSharedPrefs

 

 

 

 

 

 

 

 

 

 

 

 

1.2 Jelajahi kode Aktivitas

  1. Buka MainActivity (java/com.example.android.simplecalc/MainActivity).

Tugas 2. Menyimpan dan memulihkan data ke file preferensi bersama

2.1 Inisialisasi preferensi

  1. Tambahkan variabel anggota ke kelas MainActivity untuk menampung nama file preferensi bersama dan sebuah referensi ke objek SharedPreferences.
  2. Di metode onCreate(), inisialisasi preferensi bersama. Pastikan Anda menyisipkan kode ini sebelum pernyataan if

 

2.2 Simpan preferensi di onPause()

  1. Klik baris terakhir kelas MainActivity, tepat sebelum tanda kurung penutup.

 

 

 

 

 

  1. Dapatkan sebuah editor untuk objek SharedPreferences

 

  1. Gunakan metode putInt() untuk menempatkan integer mCount dan mCurrentColor ke dalam preferensi bersama dengan kunci yang sesuai

 

 

 

 

 

 

 

 

 

  1. Panggil apply() untuk menyimpan preferensi

 

2.3 Pulihkan preferensi di onCreate()

  1. Cari bagian dari metode onCreate() yang menguji apakah argumen savedInstanceState adalah null dan mengembalikan keadaan instance

 

 

 

 

 

  1. Di metode onCreate(), di tempat yang sama dengan kode simpan keadaan instance, dapatkan hitungan dari preferensi dengan kunci COUNT_KEY dan tetapkan ke variabel mCount

 

  1. Perbarui nilai tampilan teks utama dengan hitungan baru.

 

 

 

 

 

 

 

 

  1. Dapatkan warna dari preferensi dengan kunci COLOR_KEY dan tetapkan ke variabel mColor.

 

  1. Perbarui warna latar belakang tampilan teks utama.

 

 

 

 

 

 

2.4 Setel ulang preferensi di handler klik reset()

  1. Di metode handler klik reset(), setelah warna dan hitungan disetel ulang, dapat editor untuk objek SharedPreferences

 

  1. Hapus semua preferensi bersama

 

 

 

 

 

 

 

  1. Terapkan perubahan

 

Tampilan Aplikasi ketika dijalankan:

 

 

 

 

 

 

 

 

 

 

Jika diubah ke warna black

 

Jika diubah ke warna red

 

 

 

 

 

 

 

 

 

 

Jika diubah ke warna blue

 

Jika diubah ke warna green

 

 

 

 

 

 

 

 

 

 

Jika Count di klik dan dijalankan

 

Jika count diubah jadi 4 dan warna red

 

 

 

 

 

 

 

 

 

 

Source code:

Android_Manifest.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”com.example.android.hellosharedprefs”>

<application
android:allowBackup=”true”
android:icon=”@mipmap/ic_launcher”
android:label=”@string/app_name”
android:supportsRtl=”true”
android:theme=”@style/AppTheme”>
<activity android:name=”.MainActivity”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
</application>

</manifest>

 

MainActivity.java

package com.example.android.hellosharedprefs;

import android.content.SharedPreferences;
import android.graphics.drawable.ColorDrawable;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
// Current count.
private int mCount = 0;
// Current background color.
private int mColor;
// Text view to display both count and color.
private TextView mShowCountTextView;

// Key for current count
private final String COUNT_KEY = “count”;
// Key for current color
private final String COLOR_KEY = “color”;

// Shared preferences object
private SharedPreferences mPreferences;
// Name of shared preferences file
private static final String mSharedPrefFile = “com.example.android.hellosharedprefs”;

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

// Initialize views, color, preferences
mShowCountTextView = (TextView) findViewById(R.id.count_textview);
mColor = ContextCompat.getColor(this, R.color.default_background);
mPreferences = getSharedPreferences(mSharedPrefFile, MODE_PRIVATE);

// Restore preferences
mCount = mPreferences.getInt(COUNT_KEY, 0);
mShowCountTextView.setText(String.format(“%s”, mCount));
mColor = mPreferences.getInt(COLOR_KEY, mColor);
mShowCountTextView.setBackgroundColor(mColor);
}


@Override
protected void onPause() {
super.onPause();

SharedPreferences.Editor preferencesEditor = mPreferences.edit();
preferencesEditor.putInt(COUNT_KEY, mCount);
preferencesEditor.putInt(COLOR_KEY, mColor);
preferencesEditor.apply();
}

public void changeBackground(View view) {
int color = ((ColorDrawable) view.getBackground()).getColor();
mShowCountTextView.setBackgroundColor(color);
mColor = color;
}
public void countUp(View view) {
mCount++;
mShowCountTextView.setText(String.format(“%s”, mCount));
}

public void reset(View view) {
// Reset count
mCount = 0;
mShowCountTextView.setText(String.format(“%s”, mCount));

// Reset color
mColor = ContextCompat.getColor(this, R.color.default_background);
mShowCountTextView.setBackgroundColor(mColor);

// Clear preferences
SharedPreferences.Editor preferencesEditor = mPreferences.edit();
preferencesEditor.clear();
preferencesEditor.apply();

}
}

 

activity_main.xml

 

<?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: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.android.hellosharedprefs.MainActivity”>

<TextView
android:id=”@+id/count_textview”
android:layout_width=”match_parent”
android:layout_height=”0dp”
android:layout_weight=”60″
android:background=”@color/default_background”
android:gravity=”center”
android:text=”@string/default_count”
android:textColor=”@android:color/white”
android:textSize=”112sp” />

<LinearLayout
android:layout_width=”match_parent”
android:layout_height=”0dp”
android:layout_marginBottom=”@dimen/activity_vertical_margin”
android:layout_marginTop=”@dimen/activity_vertical_margin”
android:layout_weight=”10″
android:orientation=”horizontal”>

<Button
android:id=”@+id/black_background_button”
style=”@style/AppTheme.Button.Colored”
android:background=”@android:color/black”
android:onClick=”changeBackground”
android:text=”@string/black_button” />

<Button
android:id=”@+id/red_background_button”
style=”@style/AppTheme.Button.Colored”
android:background=”@color/red_background”
android:onClick=”changeBackground”
android:text=”@string/red_button” />

<Button
android:id=”@+id/blue_background_button”
style=”@style/AppTheme.Button.Colored”
android:background=”@color/blue_background”
android:onClick=”changeBackground”
android:text=”@string/blue_button” />

<Button
android:id=”@+id/green_background_button”
style=”@style/AppTheme.Button.Colored”
android:background=”@color/green_background”
android:onClick=”changeBackground”
android:text=”@string/green_button” />
</LinearLayout>

<LinearLayout
android:layout_width=”match_parent”
android:layout_height=”0dp”
android:layout_weight=”10″
android:gravity=”center”
android:orientation=”horizontal”>

<Button
android:id=”@+id/count_button”
style=”@style/AppTheme.Button”
android:layout_marginRight=”@dimen/activity_horizontal_margin”
android:layout_marginEnd=”@dimen/activity_horizontal_margin”
android:onClick=”countUp”
android:text=”@string/count_button” />

<Button
android:id=”@+id/reset_button”
style=”@style/AppTheme.Button”
android:onClick=”reset”
android:text=”@string/reset_button” />

</LinearLayout>
</LinearLayout>

 

 

colors.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
<color name=”colorPrimary”>#3F51B5</color>
<color name=”colorPrimaryDark”>#303F9F</color>
<color name=”colorAccent”>#FF4081</color>

<color name=”red_background”>#CC0000</color>
<color name=”blue_background”>#0099CC</color>
<color name=”green_background”>#669900</color>
<color name=”default_background”>#E0E0E0</color>
</resources>

 

dimens.xml

<resources>
<!– Default screen margins, per the Android Design guidelines. –>
<dimen name=”activity_horizontal_margin”>16dp</dimen>
<dimen name=”activity_vertical_margin”>16dp</dimen>
</resources>

 

Strings.xml

<resources>
<!– Title of app –>
<string name=”app_name”>Hello Shared Prefs</string>

<!– Button label for blue button –>
<string name=”blue_button”>Blue</string>

<!– Button label for green button –>
<string name=”green_button”>Green</string>

<!– Button label for red button –>
<string name=”red_button”>Red</string>

<!– Button label for black button –>
<string name=”black_button”>Black</string>

<!– Default string for count textview –>
<string name=”default_count”>0</string>

<!– Button label for Count button –>
<string name=”count_button”>Count</string>

<!– Button label for Reset button –>
<string name=”reset_button”>Reset</string>
</resources>

 

 

styles.xml

<resources>

<!– Base application theme. –>
<style name=”AppTheme” parent=”Theme.AppCompat.Light.DarkActionBar”>
<!– Customize your theme here. –>
<item name=”colorPrimary”>@color/colorPrimary</item>
<item name=”colorPrimaryDark”>@color/colorPrimaryDark</item>
<item name=”colorAccent”>@color/colorAccent</item>
</style>

<!– Base button styles, from standard material buttons. –>
<style name=”AppTheme.Button” parent=”Widget.AppCompat.Button”>
<item name=”android:background”>@color/default_background</item>
<item name=”android:textColor”>@android:color/black</item>
<item name=”android:layout_width”>wrap_content</item>
<item name=”android:layout_height”>wrap_content</item>
</style>

<!– Colored button styles –>
<style name=”AppTheme.Button.Colored” parent=”AppTheme.Button”>
<item name=”android:textColor”>@android:color/white</item>
<item name=”android:layout_width”>0dp</item>
<item name=”android:layout_height”>match_parent</item>
<item name=”android:layout_weight”>1</item>
</style>
</resources>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9.2: Menambahkan Setelan ke Aplikasi

Tugas 1: Menambahkan setelan pengalihan ke aplikasi

1.1. Membuat proyek dan menambahkan direktori xml dan file sumber daya

  1. Di Android Studio, buatlah proyek baru dengan parameter berikut:
Atribut Nilai
Application Name AppWithSettings
Company Name android.example.com (atau domain Anda sendiri)
Phone and Tablet Minimum SDK API15: Android 4.0.3 IceCreamSandwich
Use a Fragment? Jangan dicentang
Template Basic Activity

 

 

  1. Jalankan aplikasi dan ketuk ikon luapan di bilah aplikasi untuk melihat menu opsi, seperti yang ditampilkan dalam gambar di bawah ini. Satu-satunya item di menu opsi adalah Settings.
  2. Buat direktori sumber daya baru untuk menampung file XML yang berisi setelan:
  3. Pilih direktori resdi tampilan Project: Android, dan pilih File > New > Android Resource Directory. Dialog New Resource Directory akan muncul.
  4. Di menu tarik-turun tipe Resource, pilih xml. Nama Direktori otomatis berubah menjadi xml.
  5. Klik OK.
  6. Direktori xmlmuncul di tampilan Project: Android di dalam direktori res. Pilih direktori xml dan pilih File > New > XML resource file (atau klik kanan direktori xml dan pilih New > XML resource file).
  7. Masukkan nama file XML, preferences, di bidang nama File dan klik OK. File preferences.xml muncul di dalam direktori xml dan editor layout muncul, seperti yang ditampilkan dalam gambar di bawah ini.

 

 

1.2 Tambahkan preferensi XML dan atribut untuk setelan.

  1. Seret SwitchPreferencedari panel Palette di sebelah kiri ke atas layout, seperti yang ditampilkan dalam gambar di bawah ini.
  2. Klik tab Text di bawah editor layout untuk mengedit kode XML

 

 

 

  1. Bukan file xmldan tambahkan deklarasi preferenceTheme berikut ke AppTheme

 

  1. Buka file **build.gradle (Module: app), dan tambahkan yang berikut ini ke bagian dependencies

 

 

 

 

1.3 Tambahkan aktivitas untuk setelan dan fragmen untuk setelan yang spesifik

  1. Untuk membuat aktivitas Settings yang menyediakan UI untuk setelan, tambahkan Empty Activity ke aplikasi:
  2. Pilih appdi bagian atas Project: Android.
  3. Pilih New > Activity > Empty Activity.
  4. Beri nama aktivitas SettingsActivity.
  5. Hapus centang opsi untuk menghasilkan file layout (Anda tidak memerlukannya).
  6. Biarkan opsi Backwards Compatibility (AppCompat) dicentang.
  7. Nama paket harus sudah disetel ke example.android.projectname, dan Target Source Set harus disetel ke main. Jika tidak, buat pilihan ini di menu tarik-turun.
  8. Klik Finish.

Hasilnya adalah definisi kelas berikut di SettingsActivity

 

  1. Tambahkan fragmen kosong untuk grup setelan yang sama (tanpalayout, metode bawaan, atau callback antarmuka) ke aplikasi, untuk menukarnya ke dalam layar aktivitas Settings jika diperlukan:
  2. Pilih appdi bagian atas tampilan Project: Android lagi.
  3. Pilih New > Fragment > Fragment (Blank).
  4. Beri nama fragmen SettingsFragment.
  5. Hapus centang opsi untuk menghasilkan file layout (Anda tidak memerlukannya).
  6. Hapus centang opsi untuk menyertakan metode bawaan fragmen.
  7. Hapus centang opsi untuk menyertakan callback antarmuka.
  8. Klik Finish.

Hasilnya adalah definisi kelas berikut di SettingsFragment

 

  1. Ubah definisi kelas SettingsFragment untuk memperluas PreferenceFragmentCompat

 

 

 

 

 

 

 

 

 

  1. Ganti seluruh metode onCreateView()di fragmen dengan metode onCreate() ini

 

  1. Di akhir metode onCreatePreferences()di SettingsFragment, Anda perlu mengaitkan sumber daya setelan xml yang baru saja Anda buat dengan fragmen ini. Tambahkan sebuah panggilan ke setPreferencesFromResource dengan meneruskan id file XML (R.xml.preferences)) dan rootKey untuk mengidentifikasi root preferensi di PreferenceScreen

 

 

 

 

 

 

 

  1. Tambahkan kode berikut ke akhir metode onCreate()SettingsActivity sehingga fragmen ditampilkan sebagai konten utama

 

1.4 Hubungkan item menu Settings ke aktivitas setelan

  1. Temukan blok ifdi metode onOptionsItemSelected() di MainActivity yang menangani ketukan pada Settings di menu opsi
  2. Tambahkan intentke blok if untuk meluncurkan SettingsActivity

 

 

  1. Tambahkan navigasi tombol Upke SettingsActivity dengan mengedit deklarasinya di file xml untuk mendefinisikan induk aktivitas sebagai MainActivity.

 

1.5 Simpan nilai default di preferensi bersama

  1. Di MainActivity, tambahkan yang berikut ke akhir metode onCreate()yang sudah ada

 

1.6 Baca nilai setelan yang diubah dari preferensi bersama

  1. Sebelum menambahkan kode untuk membaca nilai setelan, buat variabel string statis di SettingsActivity untuk menampung kunci untuk nilai

 

  1. Di metode onCreate()di MainActivity, dan tambahkan yang berikut ini ke akhir metode

 

 

 

 

 

 

  1. Tambahkan metode makeText()ke onCreate() yang menampilkan nilai setelan switchPrefdi sebuah toast

 

Tugas 2: Menggunakan template Settings Activity

2.1 Menjelajahi template Settings Activity

Untuk menyertakan template Settings Activity di proyek aplikasi Anda di Android Studio, ikuti langkah-langkah ini:

  1. Salin folder proyek DroidCafe, ubah namanya menjadi DroidCafeWithSettingsdan optimalkan kodenya. (Lihat Apendiks untuk petunjuk menyalin proyek.) Jalankan aplikasi untuk memastikan berjalan lancar.
  2. Pilih appdi bagian atas tampilan Project: Android dan pilih New > Activity > Settings Activity.
  3. Dalam dialog yang muncul, terima Activity Name (SettingsActivityadalah nama yang disarankan) dan Title (Settings).
  4. Klik tiga titik di akhir bidang Hierarchical Parent dan pilih MainActivitysebagai aktivitas induk, sehingga tombol Naik di Settings Activity mengembalikan pengguna ke MainActivity. Memilih aktivitas induk otomatis memperbarui file AndroidManifest.xml untuk mendukung navigasi tombol Naik.
  5. Klik Finish.

 

 

 

 

 

 

2.2 Tambahkan item menu Settings dan hubungkan ke aktivitas

  1. Edit file xmluntuk menambahkan item menu lainnya yang bernama Settings dengan id sumber daya baru action_settings

 

  1. Ekstrak sumber daya string untuk “Settings”di atribut android:title ke nama sumber daya settings.
  2. Di MainActivity, temukan blok switch-casedi metode onOptionsItemSelected() yang menangani ketukan pada item di menu opsi
  1. Gunakan intentuntuk meluncurkan SettingsActivity dari MainActivity. Tambahkan intent di akhir blok switch case

 

2.3 Sesuaikan setelan yang disediakan oleh template

  1. Buka file xmldi direktori res > values dan konten ke komentar <!– Example settings for Data & Sync –>

 

 

 

 

2.4 Tambahkan kode untuk menyetel nilai default untuk setelan

Temukan metode onCreate() di MainActivity, dan tambahkan pernyataan PreferenceManager.setDefaultValues berikut di akhir metode

2.5 Tambahkan kode untuk membaca nilai untuk setelan

  1. Tambahkan kode berikut di akhir metode onCreate() Anda bisa langsung menambahkannya setelah kode yang Anda tambahkan di langkah sebelumnya untuk menyetel default untuk setelan

Aplikasi saat dijalankan :

 

Tombol setting

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Menu Account

 

 

 

 

Source Code :

Android_Manifest.xml

<?xml version=”1.0″ encoding=”utf-8″?>

<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”com.example.android.DroidCafeWithSettings”>

<application
android:allowBackup=”true”
android:icon=”@mipmap/ic_launcher”
android:label=”@string/app_name”
android:supportsRtl=”true”
android:theme=”@style/AppTheme”>
<activity
android:name=”com.example.android.DroidCafeWithSettings.MainActivity”
android:label=”@string/app_name”
android:theme=”@style/AppTheme.NoActionBar”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />

<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<activity
android:name=”com.example.android.DroidCafeWithSettings.OrderActivity”
android:label=”@string/title_activity_order”
android:parentActivityName=”com.example.android.DroidCafeWithSettings.MainActivity”>
<meta-data
android:name=”android.support.PARENT_ACTIVITY”
android:value=”com.example.android.DroidCafeWithSettings.MainActivity” />
</activity>
<activity
android:name=”com.example.android.DroidCafeWithSettings.SettingsActivity”
android:label=”@string/title_activity_settings”
android:parentActivityName=”com.example.android.DroidCafeWithSettings.MainActivity”>
<meta-data
android:name=”android.support.PARENT_ACTIVITY”
android:value=”com.example.android.DroidCafeWithSettings.MainActivity” />
</activity>
</application>

</manifest>

MainActivity.java

package com.example.android.DroidCafeWithSettings;

import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
displayMap();
}
});

// Sets default values only once, first time this is called.
// The third argument is a boolean that indicates whether the default values
// should be set more than once. When false, the system sets the default values
// only if this method has never been called in the past.
PreferenceManager.setDefaultValues(this, R.xml.pref_general, false);
PreferenceManager.setDefaultValues(this, R.xml.pref_notification, false);
PreferenceManager.setDefaultValues(this, R.xml.pref_data_sync, false);

// Read the Account “market” setting and display a toast message.
SharedPreferences sharedPref =
PreferenceManager.getDefaultSharedPreferences(this);
String marketPref = sharedPref.getString(“sync_frequency”, “-1”);
Boolean switchPref = sharedPref.getBoolean(“example_switch”, false);
String message = getString(R.string.market_message) + marketPref +
getString(R.string.recommend_message) + switchPref;
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle app bar item clicks here. The app bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) {
case R.id.action_order:
displayToast(getString(R.string.action_order_message));
return true;
case R.id.action_status:
displayToast(getString(R.string.action_status_message));
return true;
case R.id.action_favorites:
displayToast(getString(R.string.action_favorites_message));
return true;
case R.id.action_contact:
displayToast(getString(R.string.action_contact_message));
return true;
case R.id.action_settings:
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
default:
// Do nothing
}
return super.onOptionsItemSelected(item);
}


public void showDonutOrder(View view) {
showFoodOrder(getString(R.string.donut_order_message));
}

public void showIceCreamOrder(View view) {
showFoodOrder(getString(R.string.ice_cream_order_message));
}

/**
* Shows a message that the froyo image was clicked.
*/
public void showFroyoOrder(View view) {
showFoodOrder(getString(R.string.froyo_order_message));
}


public void showFoodOrder(String message) {
displayToast(message);
Intent intent = new Intent(this, OrderActivity.class);
startActivity(intent);
}

public void displayToast(String message) {
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}

public void displayMap() {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
// Using the coordinates for Google headquarters.
String data = getString(R.string.google_mtv_coord_zoom12);
intent.setData(Uri.parse(data));
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
}
}

Menu_Main.xml

<menu xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:app=”http://schemas.android.com/apk/res-auto”
xmlns:tools=”http://schemas.android.com/tools”
tools:context=”com.example.android.DroidCafeWithSettings.MainActivity”>
<item
android:id=”@+id/action_contact”
android:orderInCategory=”100″
android:title=”@string/action_contact”
app:showAsAction=”never” />
<item
android:id=”@+id/action_order”
android:orderInCategory=”10″
android:title=”@string/action_order”
android:icon=”@drawable/ic_order_white”
app:showAsAction=”always” />
<item
android:id=”@+id/action_status”
android:orderInCategory=”20″
android:title=”@string/action_status”
android:icon=”@drawable/ic_status_white”
app:showAsAction=”always” />
<item
android:id=”@+id/action_favorites”
android:orderInCategory=”40″
android:title=”@string/action_favorites”
android:icon=”@drawable/ic_favorites_white”
app:showAsAction=”ifRoom” />
<item
android:id=”@+id/action_settings”
android:orderInCategory=”50″
android:title=”@string/settings”
app:showAsAction=”never” />
</menu>

SettingActivity.java

package com.example.android.DroidCafeWithSettings;

import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.support.v7.app.ActionBar;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.preference.RingtonePreference;
import android.text.TextUtils;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;

import java.util.List;

public class SettingsActivity extends AppCompatPreferenceActivity {

private static Preference.OnPreferenceChangeListener
sBindPreferenceSummaryToValueListener =
new Preference.OnPreferenceChangeListener() {

@Override
public boolean onPreferenceChange(Preference preference, Object value) {
String stringValue = value.toString();

if (preference instanceof ListPreference) {
// For list preferences, look up the correct display value in
// the preference’s ‘entries’ list.
ListPreference listPreference = (ListPreference) preference;
int index = listPreference.findIndexOfValue(stringValue);

// Set the summary to reflect the new value.
preference.setSummary(
index >= 0
? listPreference.getEntries()[index]
: null);
} else if (preference instanceof RingtonePreference) {
// For ringtone preferences, look up the correct display value
// using RingtoneManager.
if (TextUtils.isEmpty(stringValue)) {
// Empty values correspond to ‘silent’ (no ringtone).
preference.setSummary(R.string.pref_ringtone_silent);
} else {
Ringtone ringtone = RingtoneManager.getRingtone(
preference.getContext(), Uri.parse(stringValue));
if (ringtone == null) {
// Clear the summary if there was a lookup error.
preference.setSummary(null);
} else {
// Set the summary to reflect the new ringtone display
// name.
String name = ringtone.getTitle(preference.getContext());
preference.setSummary(name);
}
}
} else {
// For all other preferences, set the summary to the value’s
// simple string representation.
preference.setSummary(stringValue);
}
return true;
}
};


private static boolean isXLargeTablet(Context context) {
return (context.getResources().getConfiguration().screenLayout
& Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
}


private static void bindPreferenceSummaryToValue(Preference preference) {
// Set the listener to watch for value changes.
preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);

// Trigger the listener immediately with the preference’s current value.
sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
PreferenceManager
.getDefaultSharedPreferences(preference.getContext())
.getString(preference.getKey(), “”));
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupActionBar();
}

private void setupActionBar() {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
// Show the Up button in the action bar.
actionBar.setDisplayHomeAsUpEnabled(true);
}
}

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
if (!super.onMenuItemSelected(featureId, item)) {
NavUtils.navigateUpFromSameTask(this);
}
return true;
}
return super.onMenuItemSelected(featureId, item);
}

@Override
public boolean onIsMultiPane() {
return isXLargeTablet(this);
}

@Override
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.pref_headers, target);
}


protected boolean isValidFragment(String fragmentName) {
return PreferenceFragment.class.getName().equals(fragmentName)
|| GeneralPreferenceFragment.class.getName().equals(fragmentName)
|| DataSyncPreferenceFragment.class.getName().equals(fragmentName)
|| NotificationPreferenceFragment.class.getName().equals(fragmentName);
}


@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class GeneralPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_general);
setHasOptionsMenu(true);

// Bind the summaries of EditText/List/Dialog/Ringtone preferences
// to their values. When their values change, their summaries are
// updated to reflect the new value, per the Android Design
// guidelines.
bindPreferenceSummaryToValue(findPreference(“example_text”));
bindPreferenceSummaryToValue(findPreference(“example_list”));
}

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


@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class NotificationPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_notification);
setHasOptionsMenu(true);

// Bind the summaries of EditText/List/Dialog/Ringtone preferences
// to their values. When their values change, their summaries are
// updated to reflect the new value, per the Android Design
// guidelines.
bindPreferenceSummaryToValue(findPreference(“notifications_new_message_ringtone”));
}

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


@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class DataSyncPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_data_sync);
setHasOptionsMenu(true);

// Bind the summaries of EditText/List/Dialog/Ringtone preferences
// to their values. When their values change, their summaries are
// updated to reflect the new value, per the Android Design
// guidelines.
bindPreferenceSummaryToValue(findPreference(“sync_frequency”));
}

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

 

 

 

M.Zahid Syafnel

I've a dream to be a busineman and a technopreneur

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *