onViewStateRestored崩溃的android应用

阿德什·库尔卡尼(Aadesh kulkarni)

我是Android开发的初学者。我想保存用户登录数据,以便他在暂停和恢复应用程序后或当他再次使用该应用程序时不必登录。经过一些关于stackoverflow的文章之后,我意识到onSavedInstance是做到这一点的方法。

我已经在一个loginActivity中实现了这些方法,但是当我在模拟器上打开此活动时,应用程序给出了一个错误。错误是不幸的是,“ Project_name”已停止

所以,我检查了日志文件,并得到了

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'boolean android.os.Bundle.getBoolean(java.lang.String)'

在线上

boolean inSession = savedInstanceState.getBoolean(“ loggedin”);

在onViewStateRestored方法中。

有人可以帮我找出问题所在吗?还有什么更好的方法来存储登录详细信息,以便用户不必在应用程序进入暂停或停止模式时都登录?

我在这里先向您的帮助表示感谢。:)

 @Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    if(inSession){
        savedInstanceState.putBoolean("loggedin",true);
        savedInstanceState.putString("email",emailcol);
        savedInstanceState.putString("password",passwordcol);
        savedInstanceState.putString("type","login");
    }
    else{
        savedInstanceState.putBoolean("loggedin",false);

    }
}

@Override
public void onViewStateRestored(Bundle savedInstanceState) {
    super.onViewStateRestored(savedInstanceState);

        boolean inSession = savedInstanceState.getBoolean("loggedin");
        if (inSession) {
            String email = savedInstanceState.getString("email");
            String pass = savedInstanceState.getString("password");
            String type = "login";
            BackgroundWorker bw = new BackgroundWorker(this.getContext());
            //(Name,password,email,contact,address,type
            bw.execute(null, pass, email, null, null, type);
        }

}
玛纳斯·达希奇(Manas dadheech)

根据android文档,当您的活动先前被销毁后重新创建时,您可以从捆绑包中恢复系统通过活动的保存状态。onCreate()和onRestoreInstanceState()回调方法都接收包含实例状态信息的同一个Bundle。

因为onCreate()方法是系统是创建活动的新实例还是重新创建活动的实例而调用的,所以在尝试读取状态Bundle之前,必须检查其状态是否为null。如果为空,则系统将创建活动的新实例,而不是还原先前被破坏的活动。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Always call the superclass first

// Check whether we're recreating a previously destroyed instance
if (savedInstanceState != null) {
    // Restore value of members from saved state
    mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
    mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
} else {
    // Probably initialize members with default values for a new instance
}
...

}

您可能应该使用“共享首选项”存储用户登录信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android Studios应用崩溃

来自分类Dev

简单的Android应用崩溃

来自分类Dev

Facebook登录android应用崩溃

来自分类Dev

Android setChecked(true)崩溃应用

来自分类Dev

[Android] Google Gson崩溃的应用

来自分类Dev

MVVMCross Binding崩溃导致Android应用程序崩溃

来自分类Dev

Proguard后Android应用程序崩溃

来自分类Dev

android Facebook SDK崩溃的应用程序?

来自分类Dev

C JNI库使整个android应用崩溃

来自分类Dev

Android应用程序在setText上崩溃

来自分类Dev

Android:应用经常崩溃,即时运行

来自分类Dev

开始新活动会使Android应用崩溃

来自分类Dev

Android-启用Proguard时应用崩溃

来自分类Dev

Android Map应用程序崩溃

来自分类Dev

暂停时Android应用程序崩溃

来自分类Dev

尝试发送Android图片时应用崩溃

来自分类Dev

android应用程序在getString()行崩溃

来自分类Dev

Android WebView loadURL崩溃的应用程序?

来自分类Dev

Android应用崩溃了,还是要恢复吗?

来自分类Dev

Android应用程序不断与Tabhost崩溃

来自分类Dev

尝试setText()导致Android应用崩溃

来自分类Dev

Android L:LinkageError使应用程序崩溃

来自分类Dev

Android按钮单击崩溃应用程序

来自分类Dev

Eclipse Android应用程序崩溃

来自分类Dev

安装后android应用不会崩溃

来自分类Dev

Android setContentView使我的应用程序崩溃

来自分类Dev

Kivy应用在Android上崩溃

来自分类Dev

Android Wear Step Counter崩溃应用

来自分类Dev

崩溃后停止Android自动重启应用