import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.preference.PreferenceActivity;
public class Preferences extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
SharedPreferences SP = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
String listPref = SP.getString("listPref", "No City Selected");
SP.getString("listPref", "No City Selected");
SP.contains(listPref);
if (listPref == "Aplpharetta") {
Intent myIntent = new Intent(Preferences.this, Contents.class);
Preferences.this.startActivity(myIntent);
} else if ("Greenville".equals("Greenvile")) {
Intent myIntent = new Intent(Preferences.this, Contents.class);
Preferences.this.startActivity(myIntent);
} else if ("Houston".equals("Houston")) {
Intent myIntent = new Intent(Preferences.this, Contents.class);
Preferences.this.startActivity(myIntent);
}}}
這裏是陣列上的文件 Listpreference推出新的活動
<string-array name="listArray">
<item>Alpharetta</item>
<item>Greenville</item>
<item>Houston</item>
<item>Tampa</item>
</string-array>
<string-array name="listValues">
<item>Alpharetta</item>
<item>Greenville</item>
<item>Houston</item>
<item>Tampa</item>
</string-array>
</resources>
我有當選擇listpreference正在活動開始時的問題。我已經嘗試了上面列出的兩種方式,該列表讓您選擇該項目,但不會觸發其他活動啓動。由於信息在應用程序的另一部分中填充,因此數組列表設置爲無整數。我嘗試過setOnPreferenceChangeListener()和setOnPreferenceClickListener()。使用這些參數時,首選項屏幕會閃爍發送並返回到之前的屏幕,就像它正在啓動活動一樣,但如果需要進行更改,則不會保持足夠長的打開時間。這是我首次嘗試製作一個首選項屏幕,所以我不確定我是否錯過了某些東西,或者以完全錯誤的方式解決這個問題。
如果(listPref.equals( 「阿爾法利塔」)){ \t \t \t偏好PREF =新偏好(這); \t pref.setIntent(newIntent().setClass(this,Contents.class)); \t \t \t \t}這樣的事情?這工作,有點。它將允許您進行初始選擇,但不會在您執行時啓動活動。在進行選擇並編輯首選項屏幕後,它不會讓您返回到首選項屏幕。它閃爍起來,然後直接返回到前一個屏幕。我猜這是因爲它被打開的方式,只要屏幕看到選擇,它就會運行該活動。 – Jasonwilliams10
我回過頭來看,這是我在上面的描述中描述的代碼。上面的代碼甚至沒有開始活動} else if(listPref.equals(「Tampa」)){ \t \t \t意圖myIntent = new Intent(Preferences.this,Contents.class); \t \t \t Preferences.this.startActivity(myIntent); – Jasonwilliams10
PI已使用OnSharedPreferenceChangeListener工作的代碼更新了答案。問題在於,當您創建列表時,您正在檢查您的首選項列表的值。相反,您需要在列表值更改時作出響應。也許問題在於你使用了setOnSharedPreferenceChangeListener而不是registerOnSharedPreferenceChangeListener。無論如何,我測試了上面的代碼,它與意圖(在2.2模擬器中測試)一起工作。 – Alex