我是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);
}
}
}
工作正常,它显示我的xml PreferenceScreen页面,其中包含4个Preference
标签。我的问题是如何在点击这些偏好时添加动作。例如,我希望显示一个单独的弹出窗口,我可以在其中更改数值,并在每次打开应用程序时保存该值。如果有人可以提供一个例子或其他东西,我会非常感激
答案 0 :(得分:2)
我希望显示一个单独的弹出窗口,我可以在其中更改数值并保存
这很容易,您只需要在您的xml文件中将该首选项设为EditTextPreference
,如下所示:
<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,还有布局等),你应该考虑创建一个自定义偏好,如另一个答案所述。
答案 1 :(得分:0)
听起来您正在尝试做的事情将通过创建自定义首选项来妥善处理。 Android文档有一个很好的教程:http://developer.android.com/guide/topics/ui/settings.html#Custom
答案 2 :(得分: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);
}
}