延续上一篇:
新建增加dialog_layout.xml[layout]
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Spinner android:id="@+id/spinnerbase" android:layout_width="match_parent" android:layout_height="wrap_content" android:entries="@array/array_name" android:spinnerMode="dialog" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="click 0" android:id="@+id/button0"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="click" android:id="@+id/button"/> </LinearLayout>
再新建arrays.xml[value]
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="array_name"> <item >DHCP</item> <item >Static</item> </string-array> <string-array name="array_name_value"> <item >0</item> <item >1</item> </string-array> </resources>
新建prefs_dialog.xml文件:
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <com.example.androiddialogperencetest.MyDialogShow android:key="@string/prefKeyResetQuests" android:dialogIcon="@android:drawable/ic_dialog_alert" android:title="Reset Quests" android:summary="Reset all quest-progress." android:dialogMessage="Are you sure you wish to reset your quest progress? This action cannot be undone!" android:positiveButtonText="Clear Quests" android:negativeButtonText="Cancel"/> </PreferenceScreen>
主程序:
package com.example.androiddialogperencetest; import android.os.Bundle; import android.preference.PreferenceActivity; import android.app.Activity; import android.content.SharedPreferences; import android.view.Menu; public class MainActivity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); this.addPreferencesFromResource(R.xml.prefs_dialog); } @Override public void onPause() { SharedPreferences prefs = android.preference.PreferenceManager. getDefaultSharedPreferences(getBaseContext()); if(prefs.getBoolean( getResources().getString(R.string.prefKeyResetQuests), false)) { // apply reset, and then set the pref-value back to false } } }
集成dialogpreference部分的程序:
package com.example.androiddialogperencetest; import android.content.Context; import android.preference.DialogPreference; import android.util.AttributeSet; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Spinner; public class MyDialogShow extends DialogPreference { private Spinner spinner1; private View view; @Override protected View onCreateDialogView() { // TODO Auto-generated method stub view=super.onCreateDialogView(); spinner1 = (Spinner) view.findViewById(R.id.spinnerbase); return view; } public MyDialogShow(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub super.setDialogLayoutResource(R.layout.dialog_layout); //super.setDialogIcon(R.drawable.ic); } public MyDialogShow(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub super.setDialogLayoutResource(R.layout.dialog_layout); //super.setDialogIcon(R.drawable.ic); } @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); persistBoolean(positiveResult); } }
附带一个strings.xml的值:
<string name="prefKeyResetQuests">resetQuests</string>
运行结果: