【问题标题】:User Settings - Android用户设置 - 安卓
【发布时间】:2012-04-27 07:51:57
【问题描述】:

如何在应用程序中进行更改,以便在应用程序重新启动时所有设置保持不变(例如,如果我从应用程序中选择了振动,那么当应用程序未运行时,如果我的手机在应用程序重新启动时处于振铃模式,它会将自身设置为振动)?

【问题讨论】:

    标签: android settings


    【解决方案1】:

    实际上有多种方法可以持久化更改。 Android documentation 更详细地涵盖了所有这些,但本质上是这五种方式。最简单的可能是SharedPreferences

    Shared Preferences

    将私有原始数据存储在键值对中。

    Internal Storage

    在设备内存中存储私有数据。

    External Storage

    将公共数据存储在共享的外部存储上。

    SQLite Databases

    将结构化数据存储在私有数据库中。

    Network Connection

    使用您自己的网络服务器将数据存储在网络上。

    【讨论】:

      【解决方案2】:

      使用共享首选项。您可以放置​​键值对并在需要时检索。

      【讨论】:

        【解决方案3】:

        您需要将这些设置存储在数据库中。使用方法见Using Databases

        【讨论】:

        • 我如何存储切换检查事件,例如当我检查按钮打开振动时返回应用程序振动应该处于活动状态
        • 请参阅 Waynn Lue 的 cmets 关于不同方式的信息,但您可以将其存储为布尔值或整数(即 0 表示关闭,1 表示打开)。共享首选项选项可能是最简单的解决方案。查看此答案以了解如何使用共享首选项 - link
        【解决方案4】:

        使用共享首选项

        保存您的设置:

        SharedPreferences prefs = getSharedPreferences("myprefs",Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = prefs.edit(); 
        editor.putString("email", "my_email@email.com"); 
        editor.putString("name", "Albert"); 
        editor.commit(); 
        

        检索它们:

        SharedPreferences prefs = getSharedPreferences("myprefs",Context.MODE_PRIVATE);   
        String email = prefs.getString("email", "default@email.com"); 
        

        【讨论】:

        • 我有一个切换按钮,如果选中则将设备打开振动模式。现在在应用程序之外,当我返回调用获取字符串的位置时,我会打开铃声模式,这会给出 Nullpointer 异常
        【解决方案5】:

        你可以做的就是创建一个 PreferenceActivity 像:

        public class Prefs  extends PreferenceActivity  {   
            @Override
            public void onCreate(Bundle savedInstanceState) {
                // TODO Auto-generated method stub
                super.onCreate(savedInstanceState);
                addPreferencesFromResource(R.xml.preference);
            }
        
        }
        

        在 res/xml 文件夹中添加带有此内容的preference.xml:

        <?xml version="1.0" encoding="utf-8"?>
        <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
        
            <PreferenceCategory android:title="General" >
                <CheckBoxPreference
                    android:key="notification"
                    android:summaryOff="You will not receive any notification"
                    android:summaryOn="Notifications are sent to your device"
                    android:title="Get notification" />
            </PreferenceCategory>
        
        </PreferenceScreen>
        

        在你的代码中你现在可以做:

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        Boolean sendNotification = prefs.getBoolean("notification", false);
        

        【讨论】:

          猜你喜欢
          • 2012-12-19
          • 1970-01-01
          • 1970-01-01
          • 2011-07-10
          • 2012-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多