1

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

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

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

有什么建议可以实施吗?

4

3 回答 3

1
  1. onResume将始终在 之后调用onCreate,因此您只需要在onResume方法中执行检查并启动新活动。

  2. 您可以ToastSettingsActivity加载时显示一个,例如:

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

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

于 2013-01-03T12:31:23.037 回答
1

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

于 2013-01-03T12:32:17.303 回答
1

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

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();
        }

    }
}

如果用户“注册”然后将 PREFS_REG 设置为trueonActivityResult()

于 2013-01-03T12:33:33.693 回答