2016-06-02 2 views
-1

java.lang.RuntimeException: Невозможно запустить активность ComponentInfo {com.exampledinLoginActivity}: java.lang.NullPointerExceptionAndroid NullPointerException, несмотря на то, что это не null?

protected void onCreate(Bundle savedInstanceState) { 
     Log.d(TAG, "login activity OnCreate************"); 

     super.onCreate(savedInstanceState); 
     dbHandler = new DatabaseHandler(this); 


     wasDbExisted = dbHandler.ifDatabaseExists(); 
     Log.d(TAG, "login activity wasdbexister="+wasDbExisted); 
     if (wasDbExisted &&//if db exists, this becomes true to send to mainactivity. mainactivity needs to know if db existed or not 
       !dbHandler.isLoginRemember().equals(null)) {//isloginremember returns string, username if loginremember checked, if not only returns null 
Intent i = new Intent(LoginActivity.this, MainActivity.class); 
      i.putExtra("username", dbHandler.isLoginRemember()); 
      i.putExtra("wasDbExisted", wasDbExisted); 

      startActivity(i); 
      finish(); 
     } 

Это первая деятельность моего applicaiton. Активность входа. Он проверяет, существует ли db, если db существует и в базе данных, loginremember true, он переходит в mainactivirt directlry без setcontent (это сработало).

Но если db не существует, он устанавливает содержимое и получает пароль пользователя. или если loginremember false.

Вызванный: java.lang.NullPointerException на com.example.caneraydin.androidwithlogin.LoginActivity.onCreate (LoginActivity.java:167)

ошибка в том, что для этой строки:

if (wasDbExisted && 

но журналы говорят

login activity wasdbexister=true 

подытожить

Log.d(TAG, "login activity wasdbexister="+wasDbExisted);//log output is true for this 
     if (wasDbExisted &&//it gives nullexception for this 

это мой манифест

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.caneraydin.androidwithlogin"> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"> 
     <activity android:name=".LoginActivity" 
      android:screenOrientation="landscape" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 


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

     <activity android:name=".MainActivity" 
      android:screenOrientation="landscape"> 
     </activity> 


    </application> 

</manifest> 

это dbexists метод dbhandler класса

public boolean ifDatabaseExists() { 

     Log.d(TAG,"dbhandlerifdbexists"); 

     SQLiteDatabase db = this.getWritableDatabase(); 

     Cursor mCursor = db.rawQuery("SELECT * FROM " + TABLE_OBJECT, null);//it is looking for object tble to check if db is null or not 
     Boolean dbExists; 

    if(mCursor.moveToFirst()) 
    { 
     Log.d(TAG,"dbhandlerifdbexists true"); 
     dbExists = true; 
    } 

    else 
    { 
     Log.d(TAG,"dbhandlerifdbexists false"); 
     dbExists = false; 
    } 

     return dbExists; 
} 

в моей деятельности, код так

if (wasDbExisted && 
       !dbHandler.isLoginRemember().equals(null)) { 

он показывает первую строку ,

+1

Конечно, что НЭК точки именно к этому, а не на второй проверки? Отправьте стопку, пожалуйста. – Seth

+0

две проверки находятся в двух строках, но. он показывает первую строку. может ли так быть? – user6412889

+1

change '! DbHandler.isLoginRemember(). Equals (null)' to 'dbHandler.isLoginRemember()! = Null', если ваш объект равен null, .equal() throw NPE. –

ответ

3

Нулевой чек должен быть сделан с

dbHandler.isLoginRemember() != null 

Использование .equals() на нулевой объект приведет к NPE

Смежные вопросы