从SettingsFragment打开自定义对话框
问题描述:
我试图按照设置上的Android API指南,更具体地说,我试图通过以下this part of the text创建this number picker dialog。但我无法让它工作。当我按下应该启动自定义对话框的首选项时,什么都不会发生。我认为我必须在某个地方打电话,但我无法弄清楚。从SettingsFragment打开自定义对话框
这里是我的MainActivity.java:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_activity_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_settings_fragment:
// Display the fragment as the main content
Intent i = new Intent();
i.setClass(this, SettingsActivity.class);
startActivityForResult(i, 0);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
而且它很好地启动SettingsActivity.java。 SettingsActivity.java:
public class SettingsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Display the fragment as the main content.
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment()).commit();
}
}
业大SettingsFragment.java:
public class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
}
}
这将启动的preferences.xml:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceCategory
android:key="pref_key_category_settings"
android:title="@string/pref_category1_title" >
<CheckBoxPreference
android:defaultValue="true"
android:key="pref_checkbox"
android:summary="@string/pref_checkbox_summ"
android:title="@string/pref_sync" />
<CheckBoxPreference
android:defaultValue="true"
android:key="pref_checkbox_choose_int"
android:summary="@string/pref_checkbox_choose_string_summ"
android:title="@string/pref_choose_string" />
<Preference
android:dependency="pref_checkbox_choose_int"
android:key="pref_key_num_scroller"
android:summary="@string/pref_num_scroller_summ"
android:title="@string/pref_num_scroller"/>
</PreferenceCategory>
正如我所说:当我点击pref_key_num_scroller时没有任何反应。
我对如何调用NumberPickerPreference.java不知道:
public class NumberPickerPreference extends DialogPreference {
public NumberPickerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setDialogLayoutResource(R.layout.numberpicker_dialog);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
}
}
答
改变优先级来NumberPickerPreference在你的XML,使用它的全名:
<com.something.settings.NumberPickerPreference
android:dependency="pref_checkbox_choose_int"
android:key="pref_key_num_scroller"
android:summary="@string/pref_num_scroller_summ"
android:title="@string/pref_num_scroller"/>
你试过只是改变偏好您的XML中的pref_key_num_scroller的NumberPickerPreference? – ekholm 2012-08-08 12:00:57
我将它添加为答案,因为我认为应该可以工作 – ekholm 2012-08-08 12:26:00
你从哪里得到R.layout.numberpicker_dialog?任何你愿意分享的机会,我想从'设置'例子中完全相同的一个 – Matt 2013-02-18 17:31:45