Android,子类Preference类

时间:2011-04-16 13:58:21

标签: android subclassing preference android-3.0-honeycomb

我正在尝试编写Android Honeycomb应用程序,但我无法继承Preference:http://developer.android.com/reference/android/preference/Preference.html

我想使用标题和摘要制作类似的布局,但也需要进度条。

我已经创建了布局并添加了自定义首选项类,但我似乎无法掌握它的实例来设置其中的项的值。

似乎偏好键不适用于自定义类。

以下是我的偏好定义与标准偏好类的比较:

               <Preference
                android:key="int_free_storage"
                android:title="Free Space"
                android:summary="free storage value here"/>

            <com.hamid.storageether.SpacePreference
                android:key="int_space_test"
                android:title="Test"
                android:summary="This is my custom preference"/>

我的偏好子类然后将我的XML布局设置为其构造函数

中的布局资源
setLayoutResource(R.layout.space_pref_layout);

它还会覆盖setTitle和setSummary方法......

在我的主要PreferenceActivity中,我尝试通过它的关键来获取我的偏好,但似乎没有运气,因为首选项永远不会更新:

// These Two work
Preference intTotal = (Preference)findPreference("int_total_storage");
Preference intFree = (Preference)findPreference("int_free_storage");
           intTotal.setSummary("Standard Preference Summary 1");
           intFree.setSummary("Standard Preference Summary 2");

// My subclass doesn't - It just displays the default text defined in the layout xml.
SpacePreference intTest = (SpacePreference)findPreference("int_test_space");
            intTest.setTitle("Testtttyyy");
            intTest.setSummary("Test Summary");

有人可以指出我可能出错的地方吗?

1 个答案:

答案 0 :(得分:0)

此代码是直接从程序中复制还是重新输入?如果复制了,那么你的密钥是XML中的“int_space_test”和代码中的“int_test_space”。如果是这种情况,它应该在你使用intTest的下一行抛出一个空指针异常。