Download File
Download Project
Settings
Line Wrap
Themes
default
ambiance
bespin
dracula
eclipse
material
mbo
mdn-like
neat
solarized dark
ttcn
zenburn
MainActivity.java
/* * Copyright 2015, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.example.android.testing.unittesting.BasicSample; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.util.Log; import android.view.View; import android.widget.DatePicker; import android.widget.EditText; import android.widget.Toast; import java.util.Calendar; /** * An {@link Activity} that represents an input form page where the user can provide his name, date * of birth and email address. The personal information can be saved to {@link SharedPreferences} * by clicking a button. */ public class MainActivity extends Activity { // Logger for this class. private static final String TAG = "MainActivity"; // The helper that manages writing to SharedPreferences. private SharedPreferencesHelper mSharedPreferencesHelper; // The input field where the user enters his name. private EditText mNameText; // The date picker where the user enters his date of birth. private DatePicker mDobPicker; // The input field where the user enters his email. private EditText mEmailText; // The validator for the email input field. private EmailValidator mEmailValidator; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Shortcuts to input fields. mNameText = (EditText) findViewById(R.id.userNameInput); mDobPicker = (DatePicker) findViewById(R.id.dateOfBirthInput); mEmailText = (EditText) findViewById(R.id.emailInput); // Setup field validators. mEmailValidator = new EmailValidator(); mEmailText.addTextChangedListener(mEmailValidator); // Instantiate a SharedPreferencesHelper. SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); mSharedPreferencesHelper = new SharedPreferencesHelper(sharedPreferences); // Fill input fields from data retrieved from the SharedPreferences. populateUi(); } /** * Initialize all fields from the personal info saved in the SharedPreferences. */ private void populateUi() { SharedPreferenceEntry sharedPreferenceEntry; sharedPreferenceEntry = mSharedPreferencesHelper.getPersonalInfo(); mNameText.setText(sharedPreferenceEntry.getName()); Calendar dateOfBirth = sharedPreferenceEntry.getDateOfBirth(); mDobPicker.init(dateOfBirth.get(Calendar.YEAR), dateOfBirth.get(Calendar.MONTH), dateOfBirth.get(Calendar.DAY_OF_MONTH), null); mEmailText.setText(sharedPreferenceEntry.getEmail()); } /** * Called when the "Save" button is clicked. */ public void onSaveClick(View view) { // Don't save if the fields do not validate. if (!mEmailValidator.isValid()) { mEmailText.setError("Invalid email"); Log.w(TAG, "Not saving personal information: Invalid email"); return; } // Get the text from the input fields. String name = mNameText.getText().toString(); Calendar dateOfBirth = Calendar.getInstance(); dateOfBirth.set(mDobPicker.getYear(), mDobPicker.getMonth(), mDobPicker.getDayOfMonth()); String email = mEmailText.getText().toString(); // Create a Setting model class to persist. SharedPreferenceEntry sharedPreferenceEntry = new SharedPreferenceEntry(name, dateOfBirth, email); // Persist the personal information. boolean isSuccess = mSharedPreferencesHelper.savePersonalInfo(sharedPreferenceEntry); if (isSuccess) { Toast.makeText(this, "Personal information saved", Toast.LENGTH_LONG).show(); Log.i(TAG, "Personal information saved"); } else { Log.e(TAG, "Failed to write personal information to SharedPreferences"); } } /** * Called when the "Revert" button is clicked. */ public void onRevertClick(View view) { populateUi(); Toast.makeText(this, "Personal information reverted", Toast.LENGTH_LONG).show(); Log.i(TAG, "Personal information reverted"); } }