activity_main.xml
<?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/rl" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp" tools:context=".MainActivity" android:background="#e6f1e0" > <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Go To Settings" /> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:textSize="75dp" /> </RelativeLayout>
res/xml/preferences.xml
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <EditTextPreference android:key="@string/sp_key_user_name" android:title="Input your name" /> <CheckBoxPreference android:key="@string/sp_key_show_bold_text" android:title="Display bold text?" android:defaultValue="false" android:summary="Select whether the app display bold text." /> <CheckBoxPreference android:key="@string/sp_key_show_red_text_color" android:title="Display red color text?" android:defaultValue="false" /> </PreferenceScreen>
res/values/strings.xml
<resources> <string name="app_name">Android Example - Preference</string> <string name="title_activity_settings">Settings</string> <string name="title_activity_main">Android Example - Preference</string> <!-- SharedPreferences Keys --> <string name="sp_key_show_bold_text">showBoldText</string> <string name="sp_key_user_name">userName</string> <string name="sp_key_show_red_text_color">showRedTextColor</string> </resources>
MainActivity.java
package com.cfsuman.me.androidcodesnippets; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; import android.graphics.Typeface; import android.preference.PreferenceManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private Context mContext; private Activity mActivity; private RelativeLayout mRelativeLayout; private Button mButton; private TextView mTextView; private SharedPreferences mSharedPreferences; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Get the application context mContext = getApplicationContext(); // Get the activity mActivity = MainActivity.this; // Get the instance of SharedPreferences object mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext); // Get the widgets reference from XML layout mRelativeLayout = (RelativeLayout) findViewById(R.id.rl); mButton = (Button) findViewById(R.id.btn); mTextView = (TextView) findViewById(R.id.tv); // Set a click listener for the text view mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(mContext,SettingsActivity.class); startActivity(intent); } }); // Get the user's settings from SharedPreferences String userName = mSharedPreferences.getString(getString(R.string.sp_key_user_name),"Guest"); boolean showBoldText = mSharedPreferences.getBoolean(getString(R.string.sp_key_show_bold_text), false); boolean showRedTextColor = mSharedPreferences.getBoolean(getString(R.string.sp_key_show_red_text_color),false); // If user preferred to show bold txt then make it bold if(showBoldText){ mTextView.setTypeface(null, Typeface.BOLD); }else { mTextView.setTypeface(null,Typeface.NORMAL); } // Update the text with SharedPreferences mTextView.setText("Hello " + userName); // Display red color text based on user settings if(showRedTextColor){ mTextView.setTextColor(Color.RED); }else { mTextView.setTextColor(Color.BLACK); } } }
SettingsFragment.java
package com.cfsuman.me.androidcodesnippets; import android.os.Bundle; import android.preference.PreferenceFragment; /* PreferenceFragment Shows a hierarchy of Preference objects as lists. These preferences will automatically save to SharedPreferences as the user interacts with them. To retrieve an instance of SharedPreferences that the preference hierarchy in this fragment will use, call getDefaultSharedPreferences(android.content.Context) with a context in the same package as this fragment. */ public class SettingsFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); /* public void addPreferencesFromResource (int preferencesResId) Inflates the given XML resource and adds the preference hierarchy to the current preference hierarchy. Parameters preferencesResId : The XML resource ID to inflate. */ // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); } }
SettingsActivity.java
package com.cfsuman.me.androidcodesnippets; import android.os.Bundle; import android.preference.PreferenceActivity; /* PreferenceActivity This is the base class for an activity to show a hierarchy of preferences to the user. Prior to HONEYCOMB this class only allowed the display of a single set of preference This activity shows one or more headers of preferences, each of which is associated with a PreferenceFragment to display the preferences of that header. The actual layout and display of these associations can however vary; currently there are two major approaches it may take: On a small screen it may display only the headers as a single list when first launched. Selecting one of the header items will re-launch the activity with it only showing the PreferenceFragment of that header. On a large screen in may display both the headers and current PreferenceFragment together as panes. Selecting a header item switches to showing the correct PreferenceFragment for that item. */ public class SettingsActivity extends PreferenceActivity{ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); // Display the fragment as the main content getFragmentManager().beginTransaction() .replace(android.R.id.content,new SettingsFragment()).commit(); } }





Komentar
Posting Komentar