我的应用程序需要连接到服务器,因此如果没有设置首选项,它将无法工作。使用 设置首选项SharedPreferences
。我正在寻找的是一种将用户引导至设置活动的模式。什么是常见的?
目前我正在检查是否设置了所有首选项,否则我开始设置活动onCreate
。onResume
问题是:
- 活动启动两次(通过
onCreate
和onResume
) - 用户可能不知道他/她可以使用后退硬件密钥返回主要活动
有什么建议可以实施吗?
我的应用程序需要连接到服务器,因此如果没有设置首选项,它将无法工作。使用 设置首选项SharedPreferences
。我正在寻找的是一种将用户引导至设置活动的模式。什么是常见的?
目前我正在检查是否设置了所有首选项,否则我开始设置活动onCreate
。onResume
问题是:
onCreate
和onResume
)有什么建议可以实施吗?
onResume
将始终在 之后调用onCreate
,因此您只需要在onResume
方法中执行检查并启动新活动。
您可以Toast
在SettingsActivity
加载时显示一个,例如:
Toast.makeText(context, "Press back to return.", Toast.LENGTH_SHORT).show();
您可能还希望显示Toast
或AlertDialog
何时SettingsActivity
开始告诉用户他们必须输入这些设置才能使用该应用程序。
我建议您显示一个弹出对话框,其中包含“首先设置首选项”之类的消息,并带有一个按钮来打开您的设置活动。可以在 onResume 中检查 SharedPreferences 并打开对话框。
并在用户完成编辑设置(并按下保存按钮)时自动关闭设置活动。
创建一个 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()