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

时间:2012-01-26 16:38:41

标签: android android-activity registration

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

2 个答案:

答案 0 :(得分:6)

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

示例:

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

   }
}

更好的是:

始终启动注册,但在onCreate()中,如果首选项表明注册已完成,则只需立即启动其他活动并finish()注册Activity

修改 SharedPreferences解释说:

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

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

然后通过获取编辑器来写入SharedPreferences。为此,请致电

SharedPreferences.Editor editor = prefs.Edit();

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

editor.putBoolean("some string as a key here", true/false);

然后要实际保存,请致电editor.commit();

然后,只需调用

,即可从SharedPreferences中获取值
prefs.getBoolean("some previously chosen string as a key here", true/false); 

其中true / false是默认值,如果不存在这样的密钥将返回...

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

    editor.putInt("some important number", 55);
    editor.commit();

......后

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

if(i != -1) {
//do stuff
} else {
//do other stuff
}

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

答案 1 :(得分:0)

不要将注册活动作为默认值。而是将另一个Activity作为默认值,然后在运行时它可以检查它应该将用户发送到哪个Activity。如果他们还没有注册那么startIntent(RegistrationActivity.class)。