在android中使用标志,以便从应用程序关闭的相同活动开始

时间:2015-12-02 08:10:26

标签: android

我正在创建一个应用程序,其中注册页面的数量为3。当用户在第一页上注册并保存时,它会转到第二页,依此类推。如果假设用户仅在第一页上注册并关闭了应用程序,那么当用户打开应用程序时,应该将用户带到第二页注册。怎么做?

2 个答案:

答案 0 :(得分:1)

假设您的拳头注册页面包含电子邮件和密码。 如果首页注册成功,则在SharedPreferences中设置第一页的数据,如下所示。

AppTypeDetails是SharedPreferences的类。

 AppTypeDetails.getInstance(SignUpActivity.this).setEmail(<Your Email ID>);
 AppTypeDetails.getInstance(SignUpActivity.this).setPassword(<Your Password>);

<强> AppTypeDetails.java

import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;

public class AppTypeDetails {

    private SharedPreferences sh;

    private AppTypeDetails() {

    }

    private AppTypeDetails(Context mContext) {
        sh = PreferenceManager.getDefaultSharedPreferences(mContext);
    }

    private static AppTypeDetails instance = null;

    /**
     * 
     * @param mContext
     * @return {@link AppTypeDetails}
     */
    public synchronized static AppTypeDetails getInstance(Context mContext) {
        if (instance == null) {
            instance = new AppTypeDetails(mContext);
        }
        return instance;
    }

    // get username
    public String getEmail() {
        return sh.getString("email", "");
    }

    public void setEmail(String email) {
        sh.edit().putString("email", email).commit();
    }

    // get password
    public String getPassword() {
        return sh.getString("password", "");
    }

    public void setPassword(String password) {
        sh.edit().putString("password", password).commit();
    }

    public void clear() {
        sh.edit().clear().commit();
    }

}

现在关闭你的应用并再次打开

现在在启动画面中查看以下代码。

String email = AppTypeDetails.getInstance(SplashScreen.this).getEmail();
String pass = AppTypeDetails.getInstance(SplashScreen.this).getPassword();

if (email == null && pass == null) {

    // Open First SignUp page

} else {
    // Open Second SignUp page
}

继续。

如果注册页面2成功,则在SharedPreferences中保存第二页的数据,并在启动画面中检查第一页和第二页的数据。 如果第一页和第二页的数据不为空,则直接打开第3页。

清除SharedPreferences

注销时调用clear()方法。

答案 1 :(得分:0)

如果您想拥有一个开始图标,但希望根据当前状态显示不同的活动 (或@Chirag Savsani建议的共享偏好) 你可以实现一个不可见的StartupActivity来决定哪个活动应该是可见的

public class StartupActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (!hasUserRegistered()) {
            startActivity(new Intent(this, RegisterUserActivity.class));
        } else if (!hasUserLogedIn()) {
            startActivity(new Intent(this, LoginUserActivity.class));
        } else {
            startActivity(new Intent(this, MainActivity.class));
        }
        finish(); // else StartupActivity keeps open after started activity closes
    }
}

在manifest.xml中将此StartupActivity设置为唯一的&#34; LAUNCHER&#34;使它出现在android程序管理器

<manifest ...>
    <application... >
        <activity android:name="StartupActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        ...
    </application>
</manifest>