2016-04-07 15 views
0

私はしばしばヌル例外エラーに遭遇し、私はいつもそれらを解決することになります。dbString = ""でNull例外エラーが発生しました。

ここにある:私はこの方法を使用してデータベースからいくつかのデータを印刷する必要が私のmainActivityで

public void printDB(){ 

    String dbString= WinToDB.dbToString(); 
    wordDB.setText(dbString); 
    word.setText(""); 

    meaningDB.setText(dbString); 
    meaning.setText(""); 
} 

DBSTRINGは

を返している私のデータベースハンドラから何本この方法運ぶ必要があります
public String dbToString(){ 
    dbString=""; 
    SQLiteDatabase db = getWritableDatabase(); 
    String query= "SELECT * FROM " + TABLE_NAME + " WHERE 1 "; // * star means all 'columns' 1 means all 'row' 

    Cursor c = db.rawQuery(query, null); 
    //move to first location 
    c.moveToFirst(); 

    while (!c.isAfterLast()){ 
     if(c.getString(c.getColumnIndex("wishe")) != null){ 
      dbString += c.getString(c.getColumnIndex("wishe")); 
      dbString += "\n"; 

     } 
    } 
    db.close(); 
    // db.releaseReference(); 

    return dbString; 
} 

しかし、仮想メソッド 'void android.widget.TextView.setText(java.lang.CharSequence)'をnullで呼び出すと、がスローされます。オブジェクト参照

ここでlogcatだ:

.RuntimeException:活性ComponentInfo {com.mirdox.myapplication/com.mirdox.myapplication.MainActivity}を開始できません:java.lang.NullPointerExceptionが:起動しようとし仮想メソッド 'null nullオブジェクト参照での空のandroid.widget.TextView.setText(java.lang.CharSequence)' android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2362)の の のandroid.app.ActivityThread.handleLaunchActivity ActivityThread.java:2424) android.app.ActivityThread.access $ 900(ActivityThread.java:15) 5) android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1323) (android.os.Handler.dispatchMessage(Handler.java:102)) (android.os.Looper.loop(Looper.java: 139) android.app.ActivityThread.main(ActivityThread.java:5298) at java.lang.reflect.Method.invoke(ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:372) ) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:950) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745) 原因:java.lang .NullPointerException:仮想メソッドを呼び出そうとしました 'void android.widget.TextView.setTe nullオブジェクト参照のxt(java.lang.CharSequence) ' com.mirdox.myapplication.MainActivity.printDB(MainActivity.java:79) at com.mirdox.myapplication.MainActivity.onCreate(MainActivity.java:29) android.app.ActivityThread.performLaunchActivityでandroid.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) でandroid.app.Activity.performCreate(Activity.java:6072) (ActivityThread.java:2315) ででandroid.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2424)android.app.ActivityThread.accessの $ 900(ActivityThread.java:155)android.app.ActivityThreadの $ H.handleMessage(ActivityThread.java:1323)アンドロイド.os.Handler.dispatchMessage(Handler.java:102)の android.os.Looper.loop(Looper.java:139) android.app.ActivityThread.main(ActivityThread.java:5298) at java.lang.reflect.Method.invoke(ネイティブメソッド)

どうしたらよいですか? ありがとうございます!ここでは私mainActivity `パブリッククラスMainActivityののonCreateがここAppCompatActivity {

EditText word, meaning; 
TextView wordDB, meaningDB; 
DBhandler WinToDB; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    WinToDB= new DBhandler(this, null, null, 1); 
    printDB(); 

    //_________input________________________ 
    word= (EditText)findViewById(R.id.word); 
    meaning= (EditText)findViewById(R.id.meaning); 

    //_________output_______________________ 
    wordDB= (TextView)findViewById(R.id.textView); 
    meaningDB= (TextView)findViewById(R.id.textView2); 

**** EDIT 2を拡張します

EDITは私content_main.xmlです:I'had問題は、コードを追加しますここへ。ここにevernoteのコードへのリンクがあります。content_main.xml

ps:私はprintDb()を持っています。 mainAcitvityでonCreateで書かれています。

+0

方、nullのですか? – Gendarme

+0

問題は 'dbString'ではなく、あなたが設定しようとしている' TextView'がnullです。適切なIDを使用していることを確認し、テキストを設定する前にビューが適切に膨張していることを確認してください。 – NoChinDeluxe

+0

"wordDB"を初期化しましたか? –

答えて

0

wordDBwordmeaningDBまたはmeaning行に79 `宣言wordDB`さ

関連する問題