加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 实现复杂首选项屏幕的最佳方法?

发布时间:2020-12-15 02:23:40 所属栏目:Java 来源:网络整理
导读:对于我的应用程序,我有一组相当复杂的配置选项供用户选择.我目前正在使用PreferenceActivity作为这些选项的用户界面,并使用共享首选项存储选项.作为我必须适应的一些设置的示例: 对列表:要选择背景图案,用户可以选择使用1到5种不同的形状(每个形状都是.png
对于我的应用程序,我有一组相当复杂的配置选项供用户选择.我目前正在使用PreferenceActivity作为这些选项的用户界面,并使用共享首选项存储选项.作为我必须适应的一些设置的示例:

>对列表:要选择背景图案,用户可以选择使用1到5种不同的形状(每个形状都是.png文件)并为每个形状指定一种int颜色.例如,用户可以选择橙色方块,绿色三角形和红色矩形.
>分层数据:我的应用程序的一部分可以配置为使用五种模式之一.每种模式都有一些相关的唯一设置,例如一种模式需要选择两个整数,另一种模式可能需要选择一个布尔值.

但是,我的感觉是PreferenceActivity与上面的设置不兼容,因为:

>共享首选项无法存储列表.
>共享首选项无法存储分层数据.
>将我的偏好界面简化为例如用于配置每种颜色的个别首选项按钮和使用从属首选项来禁用不适用于当前模式的首选项将导致混乱且难以使用的界面.

我可以编写自己的Preference类来配置列表,但是我发现与实现典型的View相比,实现它们非常费力,我仍然需要处理存储问题.

我的计划是:

>只需使用自定义GUI实现自定义活动即可.这使我可以更自由地为配置列表做一个漂亮的界面,我可以智能隐藏不适用于当前模式的选项.
>将我的所有设置存储在XML文件中或通过序列化Java对象.这意味着我可以轻松支持分层数据和可变长度列表,这为进一步扩展提供了空间.

这个计划看起来合理吗?我担心我不是以Android方式做事,但在我看来,共享首选项和PreferenceActivity不适合我的需求.

解决方法

自从我开始使用Android以来,我总是创建自己的偏好活动.这看起来真的很难,因为互联网上没有太多关于如何做的文档,但实际上它实际上非常简单.正如您所说,它可以让您更自由地决定UI的外观和行为.如果您想知道如何自己做偏好,这里有一个简单的小片段:

public class myprefs extends Activity{
private static final String PREFS_XML = "prefs_xml";
private static final String PREF_1 = "pref_1";

String preference;

private SharedPreferences preferences = null;
public void loadPrefs(){
    preferences = this.getSharedPreferences(PREFS_XML,Activity.MODE_PRIVATE);
    preference = preferences.getString(PREF_1,"default value");
}
}

获得自己的偏好非常简单.要设置它们,请使用

preferences.edit().putString(PREF_1,"hello!").commit();

这可以放入onClick,onItemSelected或任何其他想要放入的“事件”中.我将’preferences’设置为类范围的实例,以便我可以在类中的任何位置访问它而无需重新实例化它.我希望这能帮到你一点点.作为您具体问题的具体答案,我认为您的计划非常合理.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读