Skip to content

Most visited

Recently visited

navigation
ActivityInstrumentation / src / com.example.android.activityinstrumentation /

MainActivity.java

1
/*
2
 * Copyright 2013 The Android Open Source Project
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 *      http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16
 
17
package com.example.android.activityinstrumentation;
18
 
19
import android.app.Activity;
20
import android.content.SharedPreferences;
21
import android.os.Bundle;
22
import android.preference.PreferenceManager;
23
import android.view.View;
24
import android.widget.AdapterView;
25
import android.widget.ArrayAdapter;
26
import android.widget.Spinner;
27
 
28
import java.util.ArrayList;
29
import java.util.Arrays;
30
 
31
/**
32
 * Basic activity with a spinner. The spinner should persist its position to disk every time a
33
 * new selection is made.
34
 */
35
public class MainActivity extends Activity {
36
 
37
    /** Shared preferences key: Holds spinner position. Must not be negative. */
38
    private static final String PREF_SPINNER_POS = "spinner_pos";
39
    /** Magic constant to indicate that no value is stored for PREF_SPINNER_POS. */
40
    private static final int PREF_SPINNER_VALUE_ISNULL = -1;
41
    /** Values for display in spinner. */
42
    private static final String[] SPINNER_VALUES = new String[] {
43
            "Select Weather...", "Sunny", "Partly Cloudy", "Cloudy", "Rain", "Snow", "Hurricane"};
44
 
45
    // Constants representing each of the options in SPINNER_VALUES. Declared package-private
46
    // so that they can be accessed from our test suite.
47
    static final int WEATHER_NOSELECTION = 0;
48
    static final int WEATHER_SUNNY = 1;
49
    static final int WEATHER_PARTLY_CLOUDY = 2;
50
    static final int WEATHER_CLOUDY = 3;
51
    static final int WEATHER_RAIN = 4;
52
    static final int WEATHER_SNOW = 5;
53
    static final int WEATHER_HURRICANE = 6;
54
 
55
    /** Handle to default shared preferences for this activity. */
56
    private SharedPreferences mPrefs;
57
    /** Handle to the spinner in this Activity's layout. */
58
    private Spinner mSpinner;
59
 
60
    /**
61
     * Setup activity state.
62
     *
63
     * @param savedInstanceState
64
     */
65
    @Override
66
    protected void onCreate(Bundle savedInstanceState) {
67
        super.onCreate(savedInstanceState);
68
 
69
        // Inflate UI from res/layout/activity_main.xml
70
        setContentView(R.layout.sample_main);
71
 
72
        // Get handle to default shared preferences for this activity
73
        mPrefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
74
 
75
        // Populate spinner with sample values from an array
76
        mSpinner = (Spinner) findViewById(R.id.spinner);
77
        mSpinner.setAdapter(
78
                new ArrayAdapter<String>(
79
                        this,                                                   // Context
80
                        android.R.layout.simple_list_item_1,                    // Layout
81
                        new ArrayList<String>(Arrays.asList(SPINNER_VALUES))    // Data source
82
                ));
83
 
84
        // Read in a sample value, if it's not set.
85
        int selection = mPrefs.getInt(PREF_SPINNER_POS, PREF_SPINNER_VALUE_ISNULL);
86
        if (selection != PREF_SPINNER_VALUE_ISNULL) {
87
            mSpinner.setSelection(selection);
88
        }
89
 
90
        // Callback to persist spinner data whenever a new value is selected. This will be the
91
        // focus of our sample unit test.
92
        mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
93
 
94
            // The methods below commit the ID of the currently selected item in the spinner
95
            // to disk, using a SharedPreferences file.
96
            //
97
            // Note: A common mistake here is to forget to call .commit(). Try removing this
98
            // statement and running the tests to watch them fail.
99
            @Override
100
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
101
                mPrefs.edit().putInt(PREF_SPINNER_POS, position).commit();
102
            }
103
 
104
            @Override
105
            public void onNothingSelected(AdapterView<?> parent) {
106
                mPrefs.edit().remove(PREF_SPINNER_POS).commit();
107
            }
108
        });
109
    }
110
}
This site uses cookies to store your preferences for site-specific language and display options.

Hooray!

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a one-minute survey?
Help us improve Android tools and documentation.