【问题标题】:Pattern to force user to set preferences强制用户设置首选项的模式
【发布时间】:2013-01-03 12:25:23
【问题描述】:

我的应用程序需要连接到服务器,因此如果没有设置首选项,它将无法工作。使用SharedPreferences 设置首选项。我正在寻找的是一种将用户引导至设置活动的模式。什么是常见的?

目前我正在检查onCreateonResume 是否设置了所有首选项,否则我开始设置活动。问题是:

  1. 活动启动了两次(通过onCreateonResume
  2. 用户可能不知道他/她可以使用返回硬件键返回主要活动

有什么建议可以实施吗?

【问题讨论】:

    标签: android sharedpreferences usability


    【解决方案1】:

    创建一个 LauncherActivity 类,您可以在其中决定应该启动哪个 Activity - PreferenceActivity 或 MainActivity:也请查看 this 建议

    public class LauncherActivity extends Activity {
    
        SharedPreferences settings;
    
        public void onCreate(Bundle savedInstanceState) {
    
            settings = getSharedPreferences(PREFS_NAME, 0);
    
            if (settings.getBoolean(PREFS_REG, false)) {
                startActivity( new Intent(this, MAinActivity.class) );
                finish();
            } else {
                 Intent enableBtIntent = new Intent(this, PreferenceActivity.class);
             startActivityForResult(enableBtIntent, SETTINGS);
            }
        }
    
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    
            if(requestCode == SETTINGS ) {
                 startActivity( new Intent(this, MAinActivity.class) );
                 Editor editor = settings.edit();
                 editor.putBoolean(PREFS_REG, true);
                 editor.commit();
                 finish();
            }
    
        }
    }
    

    如果用户“注册”,则在onActivityResult()

    中将 PREFS_REG 设置为 true

    【讨论】:

    • 如果你使用这个方法,我不认为你想finish() LauncherActivity 那样当用户按下时,堆栈中将没有活动,它会返回到以前的应用程序。此外,如果您删除了finish(),则需要将所有这些放入onResume 方法中,否则您只会看到一个空白活动。就个人而言,我认为从MainActivityonResume 调用startActivity 是一个更好的解决方案,这也是OP 目前正在做的事情。
    • 插入另一个活动真的是个好主意吗?从脱钩的角度来看,这似乎是合理的,但我可以想象它会使方式复杂化,例如当再次取消设置偏好时。
    • @erandir 在此启动器活动中,您可以创建一个欢迎屏幕或使用期限 - 然后您可以添加一些继续按钮,该按钮导航到首选项活动,如果用户已注册,则启动器活动将自动导航到 MainActivity。我认为大多数应用都是这样工作的
    【解决方案2】:

    我建议您显示一个弹出对话框,其中包含“首先设置首选项”之类的消息,并带有一个按钮以打开您的设置活动。可以在 onResume 中检查 SharedPreferences 并打开对话框。
    并在用户完成编辑设置(并按下保存按钮)时自动关闭设置活动。

    【讨论】:

      【解决方案3】:
      1. onResume 总是在onCreate 之后调用,因此您只需在onResume 方法中执行检查并启动新活动即可。

      2. 您可以在SettingsActivity 加载时显示Toast,例如:

        Toast.makeText(context, "Press back to return.", Toast.LENGTH_SHORT).show();
        

      SettingsActivity 开始告诉用户必须输入这些设置才能使用应用程序时,您可能还希望显示ToastAlertDialog

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-30
        • 2014-10-10
        • 2016-11-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多