2016-06-01 4 views
0

그리드 아이템 클릭을 기반으로 한 목록보기를 채우고 싶습니다. 사용자가 첫 번째 그리드 아이템을 클릭하면리스트 뷰를 보여주고 싶습니다. 나는 SQLite 데이터베이스를 미리 채웠다.항목 그리드보기 및 SQLite에서 - 안드로이드

내가 시도한 것은 첫 번째 활동에서 항목을 클릭하여 DB 클래스에 전달하는 것입니다. 하지만 작동하지 않습니다. 문제를 해결하도록 도와주세요.

주요 활동 클래스에서.

  grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 


        Intent i=new Intent(MainActivity.this ,ContactView.class); 
        i.putExtra("ID_EXTRA",String.valueOf(id)); 
        startActivity(i); 

       } 




      }); 

이것은 내가 클릭 한 ID를 검색하고 변수를 SQL 쿼리와 같게 만드는 방법입니다. 내가 대신 생각

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

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; 
} 

는 로그 캣

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(); String a = extras.getString ("ID_EXTRA"); 목록 quotes = databaseAccess.getQuotes(); – coderaizer

+0

데이터베이스 테이블을 추가하고 로그캣 오류가 발생합니다. –

답변

1

, 당신은 확인해야합니다 긴 onCreate() 전에 사용할 수없는 Context가 필요합니다. 따라서 Activity 라이프 사이클에서 onCreate 메소드의 내부 또는 이후에 호출되어야합니다.

희망이 도움이 될 것입니다.

0
database.rawQuery("SELECT org_name FROM org_name WHERE category_id='ID_EXTRA'", 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

관련 문제