2016-06-01 5 views
0

グリッドアイテムのクリックに基づいてリストビューに値を設定したいと思います。ユーザーが最初のグリッド項目をクリックすると、それに応じてリストビューを表示したいと思います。私はここにSQLiteデータベースを使用しています。アイテムクリックグリッドビューとSQLite - Android

私が試みたのは、最初のアクティビティでアイテムクリックIDを取得してDBクラスに渡すことでした。しかし、それは動作していません。問題を解決するのを手伝ってください。

メインアクティビティクラスから。

これは、クリックしたIDを取得して変数をSQLクエリと等しくする方法です。

public List<String> getQuotes() { 
    List<String> list = new ArrayList<>(); 
    Integer value; 

    Bundle extras = getIntent().getExtras(); 
    String a = extras.getString("ID_EXTRA"); 

    if(extras != null) 
    { 

     Cursor cursor = database.rawQuery("SELECT org_name FROM org_name WHERE category_id='ID_EXTRA'", null); 
     cursor.moveToFirst(); 
     while (!cursor.isAfterLast()) { 
      list.add(cursor.getString(0)); 
      cursor.moveToNext(); 
      cursor.close(); 
     } 
    } 

    /* if (passedVar != null) { 


    }*/ 

    return list; 
} 

logcat

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sra.hellosrilanka/com.example.sra.hellosrilanka.ContactView}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 
     at android.app.ActivityThread.access$800(ActivityThread.java:151) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5257) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference 
     at com.example.sra.hellosrilanka.DBAccess.getQuotes(DBAccess.java:50) 
     at com.example.sra.hellosrilanka.ContactView.onCreate(ContactView.java:29) 
     at android.app.Activity.performCreate(Activity.java:5990) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 

 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 
            at android.app.ActivityThread.access$800(ActivityThread.java:151) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5257) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
06-01 20:09:52.960 1230-1312/system_process E/InputDispatcher﹕ channel '2d7e5e28 com.example.sra.hellosrilanka/com.example.sra.hellosrilanka.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 
+0

どのようなエラーが表示されますか? – Jayanth

+0

@ Jayanth- グリッドアイテムをクリックするとアプリが停止しました。エラーは次のとおりです。 バンドルextras = getIntent()。getExtras(); 文字列a = extras.getString( "ID_EXTRA"); リスト quotes = databaseAccess.getQuotes(); 私は – coderaizer

+0

データベーステーブルを追加し、ログを記録するエラーが発生しました。 –

答えて

1

、あなたがチェックする必要があります長いですonCreate()の前には利用できないContextが必要です。したがって、アクティビティライフサイクルでonCreateメソッドの内側または後に呼び出される必要があります。

希望すると、これが役立ちます。

0
database.rawQuery("SELECT org_name FROM org_name WHERE category_id='ID_EXTRA'", null); 

database.rawQuery("SELECT org_name FROM org_name WHERE category_id="+a, null); 

への変更これを私は思うの代わりに、そしてgetIntent() - ID、位置を送信する必要があります。.. idが(ちょうど提案はonclickのハンドラを参照してください)あなたはgetIntentを呼び出しているところ

あなたgetIntentがnull参照を返しますので、このエラーが発生し
Bundle extras = getIntent().getExtras(); 
    String a = extras.getString("ID_EXTRA"); 
change to 
String a =getIntent().getStringExtra("ID_EXTRA"); 
+0

ありがとうございます@sushしかし、それはまた、アプリを停止する原因です – coderaizer