2017-06-03 13 views
0

アプリケーションが起動すると、強制的に強制終了されます。ユーザーが既にログインしているかどうかを確認するときに強制終了する

私はlogcatをチェックしましたし、これは誤りです:

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean prefs.UserSession.isUserLoggedin()' on a null object reference

これはカントー起こっているなぜ私はAndroidの開発に関する初心者ですので、私は表示されません:(

これは私のAuthentication.java(これはアプリケーションの起動時つもり開かれている最初のアクティビティ/クラスです)

... 
import prefs.UserInfo; 
import prefs.UserSession; 
... 

public class Authentication extends AppCompatActivity { 
    private UserSession session; 
    private UserInfo userInfo; 
    ... 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    ... 
     if(session.isUserLoggedin()){ 
      startActivity(new Intent(this, Mainpage.class)); 
      finish(); 
     } 
    ... 
です

これは、あなたが活動の状況などのパラメータを使用している私のUserSession.java(セッションを処理するクラス)あなたのコードで

... 
import android.content.Context; 
import android.content.SharedPreferences; 

public class UserSession { 
    .... 
    private static final String KEY_IS_LOGGED_IN = "isloggedin"; 
    SharedPreferences prefs; 
    SharedPreferences.Editor editor; 
    Context ctx; 

    public UserSession(Context ctx) { 
     this.ctx = ctx; 
     prefs = ctx.getSharedPreferences(PREF_NAME, ctx.MODE_PRIVATE); 
     editor = prefs.edit(); 
    } 
    public void setLoggedin(boolean isLoggedin){ 
     editor.putBoolean(KEY_IS_LOGGED_IN, isLoggedin); 
     editor.apply(); 
    } 
    public boolean isUserLoggedin(){return prefs.getBoolean(KEY_IS_LOGGED_IN, false);} 
} 
+0

'session'は'私はそれを初期化してきました –

+0

null'なので '民間UserSessionセッションです;' –

+0

[オブジェクトの作成](https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html) – adneal

答えて

0

です。

public UserSession(Context ctx) { 
     this.ctx = ctx; 
     prefs = ctx.getSharedPreferences(PREF_NAME, ctx.MODE_PRIVATE); 
     editor = prefs.edit(); 
    } 

だから、あなたがnullのオブジェクト参照を受けcontext.Withoutコンテキストを使用してユーザーセッションオブジェクトを初期化する必要があり

private UserSession session=new UserSession(this); 
+0

'java.lang.RuntimeException:アクティビティをインスタンス化することができませんComponentInfo {com.blocktrekacademy.officialblocktrek/com.blocktrekacademy.officialblocktrek.Authentication}:java.lang.NullPointerException:仮想メソッド 'android.content.SharedPreferences android.contentを呼び出しようとしています。 Context.getSharedPreferences(java.lang.String、int) 'ヌルオブジェクトリファレンスで' –

+0

PREF_NAMEを初期化しましたか? – Chandru

+0

私はそうは思わない、どのように? –

関連する問題