当前位置:编程学习 > wap >>

PreferenceActivity和ListPreference的用法问题

我想让达到这样一个功能,按下MyActivity 的view里头的一个button,然后弹出像下图的一个对话框。我看到android里头都是用PreferenceActivity。我应该是让MyActivity 继承PreferenceActivity,还是应该在button的onClick()函数里头创建一个PreferenceActivity呢?


我试了试让MyActivity 继承PreferenceActivity,效果如下,那我就没法定制我的MyActivity界面了,PreferenceActivity里头貌似必须要有个listView,是这样的么?


点击“area_preference_key”后


代码如下:
area_preference.xml

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
 
    <ListPreference
        android:key="area_preference_key" 
        android:title="area_preference_key"
        android:entries="@array/ver_count_entry_text"
        android:entryValues="@array/ver_count_entry_value"
        android:persistent="true" />
 
</PreferenceScreen>


MyActivity.java
public class MyActivityextends PreferenceActivity{


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //这里我能设置另外的layout么?如果可以如何在控制我的layout中那个view click之后弹出listpreference 的对话框
        addPreferencesFromResource(R.layout.area_preference);
    }
   
}




就这个点了选中其中一向还报错, ListPreference真是难用。
D/AndroidRuntime(  227): Shutting down VM
W/dalvikvm(  227): threadid=3: thread exiting with uncaught exception (group=0x4001aa28)
E/AndroidRuntime(  227): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime(  227): java.lang.NullPointerException
E/AndroidRuntime(  227):        at android.preference.ListPreference.onDialogClosed(ListPreference.java:218)
E/AndroidRuntime(  227):        at android.preference.DialogPreference.onDismiss(DialogPreference.java:359)
E/AndroidRuntime(  227):        at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1007)
E/AndroidRuntime(  227):        at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  227):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  227):        at android.app.ActivityThread.main(ActivityThread.java:4203)
E/AndroidRuntime(  227):        at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  227):        at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(  227):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
E/AndroidRuntime(  227):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
E/AndroidRuntime(  227):        at dalvik.system.NativeStart.main(Native Method)
--------------------编程问答-------------------- 这个可以用一个dialog 或者用context menu办法很多。 我说的这俩种还比较好用。 可以在你的Activity里面使用。 具体用法参照API demo。 --------------------编程问答-------------------- public interface
ContextMenu

Extension of Menu for context menus providing functionality to modify the header of the context menu.

Context menus do not support item shortcuts and item icons.
这个是指里头每一个item都不能有图标么?
To show a context menu on long click, most clients will want to call registerForContextMenu(View) and override onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo). --------------------编程问答-------------------- 如果LZ想在弹出的Activity里面自己布局 ,完全可以就做成Activity , 不用派生成PreferenceActivity , 把那个activity的主题设置为Dialog就行了 ,然后自己再做布局就OK咯 --------------------编程问答-------------------- 自己实现一个这样的布局,把这个布局放到Dialog中就OK了,
--------------------编程问答-------------------- 就是自己布局麻烦啊,我试试自己布局看看吧
--------------------编程问答-------------------- ListPreference就可以啦 

Values里面定义一下Array就可以了

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="entries_list_preference">
    <item>one</item>
    <item>two</item>
    <item>three</item>
</string-array>
<string-array name="entriesvalue_list_preference">
    <item>1</item>
    <item>2</item>
    <item>3</item>
</string-array>
</resources>
--------------------编程问答-------------------- 不错! --------------------编程问答-------------------- 如果实现上述效果用DialogInference怎么做?且存储的是Long型,不是String类型 --------------------编程问答-------------------- --------------------编程问答-------------------- 继承PreferenceActivity,添加ListPreference,就行了 --------------------编程问答-------------------- 感觉你要的就是一个android的下拉框,建议你用spiner
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,