来自sharedPreferences android的getInt

时间:2012-10-22 22:02:58

标签: android sharedpreferences

我正在尝试使用getInt从我的偏好中获取一个整数,所以当用户在偏好中选择一项运动时,它将根据他们选择的运动设置不同的布局

我的java

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getPrefs.getInt("sports", 1)){

    setContentView(R.layout.main);
    }else if(getPrefs.getInt("sports", 1)){

        setContentView(R.layout.hockey);
    }else if(getPrefs.getInt("sports", 1)){


        setContentView(R.layout.basketball);
    }

我的偏好xml

    <?xml version="1.0" encoding="utf-8"?>
  <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

<ListPreference
    android:entries="@array/list"
    android:key="sports"
    android:summary="Choose your sport"
    android:title="Sports" 
    android:entryValues="@array/lValues"
    android:defaultValue="1">
</ListPreference>

我的数组xml

<string-array name="list">

     <item >
        Soccer
    </item>

    <item >
        Lacross
    </item>


    <item >
        Hockey
    </item>


    <item >
        VolleyBall
    </item>

    <item >
        Basketball
    </item>

    </string-array>



     <string-array name="lValues">
          <item >
         1
    </item>


    <item >
         2
    </item>


    <item >
         3
    </item>

    <item >
         4
    </item>
    <item>
        5
    </item>
         </string-array>

我在

下得到了错误
    getPrefs.getInt("sports", 1)

最小sdk和目标sdk都是10,如果这会产生影响。

1 个答案:

答案 0 :(得分:2)

1与真实不同。

1是一个int,而true是一个布尔值。

我想你应该这样做:

if(getPrefs.getInt("sports", 1)==1)

if(getPrefs.getInt("sports", 1)==2)
顺便说一下,在你的情况下,我会这样做:

switch(getPrefs.getInt("sports", 1)){
    case 1:
        setContentView(R.layout.main);
        break;
    case 2:
        setContentView(R.layout.hockey);
        break;
    //blahBlah
}