【问题标题】:NullPointerException Android [duplicate]NullPointerException Android [重复]
【发布时间】:2017-04-26 10:09:10
【问题描述】:

我得到 NullPointerException 并且我无法修复它。任何人都可以看看我的代码,看看问题是什么以及如何解决它。提前致谢。

DatabeseDEO.class

            public class DatabaseDEO  {
    private DatabaseHelper DbHelper;
     public DatabaseDEO(Context context) {
            DbHelper = new DatabaseHelper(context);
        }

        public DatabaseDEO() {

        }

        public ArrayList<String> getToSpinner() {
            ArrayList<String> list=new ArrayList<String>();
            SQLiteDatabase db = DbHelper.getReadableDatabase();
            db.beginTransaction();
            try
            {

                String selectQuery = "SELECT code FROM "+ Currency.NAME_TABLE;
                Cursor cursor = db.rawQuery(selectQuery, null);
                if(cursor.getCount() >0)

                {
                    while (cursor.moveToNext()) {

                        String currency= cursor.getString(cursor.getColumnIndex("code"));
                        list.add(currency);

                    }


                }
                db.setTransactionSuccessful();

            }
            catch (SQLiteException e)
            {
                e.printStackTrace();

            }
            finally
            {
                db.endTransaction();

            }

            return list;
        }
    }

AddWallet.class

public class AddWallet extends AppCompatActivity {
Spinner currency;
DatabaseDEO db = new DatabaseDEO();
        ArrayList<String> list= db.getToSpinner();
        ArrayAdapter<String> adapter= new ArrayAdapter<String>(this,R.layout.currency_spinner, R.id.text,list);
        currency.setAdapter(adapter);
    }

}

currency_spinner.xml

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">
    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="5sp"
        android:paddingBottom="10sp"
        android:paddingTop="10sp"

        >

    </TextView>


</RelativeLayout>

错误

              java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.martin.xxx/com.example.martin.xxx.AddWallet}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase Database.DatabaseHelper.getReadableDatabase()' on a null object reference
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
                  at android.app.ActivityThread.-wrap12(ActivityThread.java)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:154)
                  at android.app.ActivityThread.main(ActivityThread.java:6077)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
               Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase Database.DatabaseHelper.getReadableDatabase()' on a null object reference
                  at Database.DatabaseDEO.getToSpinner(DatabaseDEO.java:32)
                  at com.example.martin.xxx.AddWallet.onCreate(AddWallet.java:41)
                  at android.app.Activity.performCreate(Activity.java:6664)
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 
                  at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:154) 
                  at android.app.ActivityThread.main(ActivityThread.java:6077) 
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

【问题讨论】:

  • 如果我的回答帮助您将其标记为正确答案,则将问题标记为已解决。如果没有解决,请索取更多信息

标签: android sqlite nullpointerexception android-database


【解决方案1】:

首先按照命名约定将 DbHelper 重命名为 dbHelper

解决方案: 你必须构造函数

    public DatabaseDEO(Context context) {
        DbHelper = new DatabaseHelper(context);
    }

    public DatabaseDEO() {

    }

第一个初始化databaseHelper,第二个不初始化。

AddWallet 你调用空的 Constructor 所以 DatabaseHelper 没有初始化你必须调用第二个构造函数并删除空的不要再叫错了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 2016-09-03
    • 2014-06-24
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2021-08-07
    相关资源
    最近更新 更多