2013-12-19 53 views
0

我是Android Preferences的新手,我正在使用它來設置菜單,但我只是有幾個問題。我查看了API網站,並找不到添加操作的方法。我有一個Activity在首選項中添加動作

public class SettingsActivity extends PreferenceActivity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit(); 
} 

public static class MyPreferenceFragment extends PreferenceFragment 
{ 
    @Override 
    public void onCreate(final Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     PreferenceManager.setDefaultValues(getActivity(), R.xml.preferences, false); 
     addPreferencesFromResource(R.xml.preferences); 
    } 
} 
} 

的正常工作,它會顯示其中包含4個Preference標籤我的XML PreferenceScreen頁。我的問題是如何在點擊這些偏好時添加操作。例如,我想要顯示一個單獨的彈出窗口,可以在每次打開應用程序時更改數值並保存該數值。如果有人可以提供一個例子或者我真的很感激它

回答

2

我想單獨彈出窗口將顯示在哪裏我可以更改數字值和要保存的內容

這很簡單,您只需將該偏好設置爲EditTextPreference即可xml文件像這樣:

<EditTextPreference 
android:title="@string/title" 
android:key="preferenceKey" /> 

您可以更定製:如果您只想整數android:numeric="integer",如果你想設置的最大長度android:maxLength="3",默認值爲android:defaultValue="10"。您不必在Java類做任何事情


我怎麼對那些喜好點擊

如果你想添加一些更復雜的動作,使用Preference.OnPreferenceClickListener時添加行爲。您可以使用它像這樣:

Preference preference = // some preference 
preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener(){ 
    @Override 
    public boolean onPreferenceClick(Preference p){ 
     //do something 
     return false; 
    } 
}); 

您可以在this question找到更多。希望這可以幫助

PS。如果您想自定義首選項(即不僅僅是onClick動作,還包括佈局等),您應該考慮創建一個自定義首選項,如另一個答案中所述。

+0

這工作完美,謝謝。唯一的問題是'android:numeric'不能與'EditTextPreference'一起使用我只是將它改爲'android:inputType' –

0

根據您的要求,您可以通過您的首選標籤意圖。下面是我的Menu.java示例代碼:,你也可以在按照開發者教程:http://developer.android.com/guide/topics/ui/settings.html#Custom

public boolean onOptionsItemSelected(MenuItem item) { 
     // TODO Auto-generated method stub 
     switch(item.getItemId()){ 
      case R.id.about: 
       /*Intent aboutIntent = new Intent(Menu.this, About.class); 
       startActivity(aboutIntent);*/ 

       Intent aboutIntent = new Intent("com.example.myfirstapp.ABOUT"); 
       startActivity(aboutIntent); 
      break; 
      case R.id.preference: 
       Intent prefsIntent = new Intent("com.example.myfirstapp.PREFS"); 
       startActivity(prefsIntent); 
      break; 
      case R.id.exit: 
       finish(); 
       break; 
     } 
     return false; 
    } 

守則About.java

public class About extends Activity { 
    TextView TV1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.about); 
     TV1 = (TextView) findViewById (R.id.textView1); 
    } 
}