0

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

我的爪哇

 @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。

4

1 回答 1

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
}
于 2012-10-22T22:14:03.127 回答