如何在android中实现只能运行一次的注册活动?

Ven*_*esh 1 android registration android-activity

我正在设计一个具有注册过程活动的应用程序,此活动默认启动.我希望在注册过程成功完成后永久禁用此活动,然后应将其替换为不同的活动作为应用程序剩余生命周期的默认活动.我试图通过此搜索问题,但我几乎找不到任何东西.任何帮助将不胜感激.提前致谢.

Lux*_*ode 6

注册完成后,将一些值提交给SharedPreferences,然后在启动屏幕或其他一些打开的活动中,检查首选项.如果值表明注册已完成,请启动另一个Activity而不是注册一个...

例:

public class SplashScreen extends Activity {

  public void onCreate(Bundle state) {
    super.onCreate(state);
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    boolean regComplete = prefs.getBoolean("registration", false);
    if(regComplete) {
       startActivity(new Intent(this, SomeActivity.class));
    } else {
       startActivity(new Intent(this, Registration.class));

   }
}
Run Code Online (Sandbox Code Playgroud)

更好的是:

始终启动注册,但是onCreate(),如果prefs指示注册已完成,则立即启动另一个Activity并finish()注册Activity.

编辑 SharedPreferences解释:

SharedPreferences允许您在应用中保留原始值.您通过执行以下操作来获取SharedPreferences:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

然后通过获取编辑器来写入SharedPreferences.要做到这一点,你打电话

SharedPreferences.Editor editor = prefs.Edit();
Run Code Online (Sandbox Code Playgroud)

然后您可以使用键/值将值提交给编辑器:

editor.putBoolean("some string as a key here", true/false);
Run Code Online (Sandbox Code Playgroud)

然后实际保存,你打电话 editor.commit();

然后通过简单地调用从SharedPreferences中获取值

prefs.getBoolean("some previously chosen string as a key here", true/false); 
Run Code Online (Sandbox Code Playgroud)

其中,如果不存在此类密钥,则返回true/false是默认值...

这很方便,可以让你做一些简单的事情:

    editor.putInt("some important number", 55);
    editor.commit();
Run Code Online (Sandbox Code Playgroud)

......后来

int i =  prefs.getInt("some important number", -1); 

if(i != -1) {
//do stuff
} else {
//do other stuff
}
Run Code Online (Sandbox Code Playgroud)

另请参阅:http://developer.android.com/guide/topics/data/data-storage.html#pref