2012-03-10 77 views
0

我試圖在應用程序中剔除最後幾個錯誤。用我目前的設置,我讓用戶瀏覽一系列的listview(Category - > source - > title)。基於listview中的位置,我傳遞一個int,它被我的光標用來過濾結果並給出屬於先前單擊的項目的項目。在通過不同的活動導航幾次後,它會崩潰,因爲應用程序失去了所述int的值(通過活動前後移動)。我試圖設置一個getextra(),所以它不會失去這個值。我已經把它設置爲放置並獲取這些整數,但無法將它們鏈接到我的遊標,因爲它想以靜態方式訪問這些int,但我沒有以靜態方式獲取它們。將額外值傳遞給光標

public class title extends ListActivity { 

    Bundle extras = getIntent().getExtras(); 
    int categoryClick = extras.getInt("cateClick"); 
    int sourceClick = extras.getInt("sourceclick"); 

... 

@Override 
protected void onListItemClick(ListView list, View v, int position, long id) 
{ 
    super.onListItemClick(list, v, position, id); 
    titleClick = position; 
    final Intent intent = new Intent(this, inputpage.class); 
    intent.putExtra("cateclick", categoryClick); 
    intent.putExtra("sourceclick", sourceClick); 
    intent.putExtra("titleclick", titleClick); 
    startActivity(intent); 
    } 

我的光標從我用的是這個樣子的

// retrieves all the descriptions for the edittext fields 
     public Cursor getUserWord() 
     { 
      return myDataBase.query(USER_WORD_TABLE, new String[] { 
        KEY_ID, 
        KEY_CATEGORY, 
        KEY_SOURCE, KEY_TITLE, KEY_USERWORD, KEY_QUICK 
        }, 
        KEY_CATEGORY+ "=" + categories.categoryClick + " AND " + KEY_SOURCE+ "=" 
        +source.sourceClick + " AND " + KEY_TITLE+ "=" + title.titleClick, 
        null, null, null, KEY_ID); 

     } 

我的數據庫有什麼不變的有多個表,一個用於上述光標下面的圖片。 enter image description here

這個設置可能不是獲得我想要的結果的最佳方法,但是對於android,sqlite和java來說,這是我能夠得到我所需要的。

嘗試切換到getextra之前,我得到的錯誤是

03-10 16:06:14.653: E/AndroidRuntime(939): Uncaught handler: thread main exiting due to uncaught exception 
03-10 16:06:14.683: E/AndroidRuntime(939): java.lang.NullPointerException 
03-10 16:06:14.683: E/AndroidRuntime(939): at wanted.pro.madlibs.source.onListItemClick(source.java:55) 
03-10 16:06:14.683: E/AndroidRuntime(939): at android.app.ListActivity$2.onItemClick(ListActivity.java:312) 
03-10 16:06:14.683: E/AndroidRuntime(939): at android.widget.AdapterView.performItemClick(AdapterView.java:284) 
03-10 16:06:14.683: E/AndroidRuntime(939): at android.widget.ListView.performItemClick(ListView.java:3285) 
03-10 16:06:14.683: E/AndroidRuntime(939): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1640) 
03-10 16:06:14.683: E/AndroidRuntime(939): at android.os.Handler.handleCallback(Handler.java:587) 
03-10 16:06:14.683: E/AndroidRuntime(939): at android.os.Handler.dispatchMessage(Handler.java:92) 
03-10 16:06:14.683: E/AndroidRuntime(939): at android.os.Looper.loop(Looper.java:123) 
03-10 16:06:14.683: E/AndroidRuntime(939): at android.app.ActivityThread.main(ActivityThread.java:4363) 
03-10 16:06:14.683: E/AndroidRuntime(939): at java.lang.reflect.Method.invokeNative(Native Method) 
03-10 16:06:14.683: E/AndroidRuntime(939): at java.lang.reflect.Method.invoke(Method.java:521) 
03-10 16:06:14.683: E/AndroidRuntime(939): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
03-10 16:06:14.683: E/AndroidRuntime(939): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
03-10 16:06:14.683: E/AndroidRuntime(939): at dalvik.system.NativeStart.main(Native Method) 

這裏是一個屏幕截圖休息發生了什麼事情的下降。 enter image description here 改變額外的靜態 enter image description here

+0

從你共享的代碼中,不清楚你的意思是什麼:「我已經設置好了把這些int整合起來,但是沒有把它們連接到我的遊標上,因爲它想要以靜態方式訪問這些int但我沒有以靜態的方式獲得它們。「什麼是你的光標訪問的靜態變量? – elevine 2012-03-10 22:06:22

+0

如果我要改變光標//獲取所有的標題 \t \t公共光標getTitles() \t \t { \t \t回myDataBase.query(TITLE_TABLE,新的String [] { \t \t KEY_ID, \t \t KEY_TITLE, \t \t KEY_TITLEDESC, \t \t KEY_TITLESTORY,KEY_CATEGORY,KEY_SOURCE, \t \t}, \t \t KEY_CATEGORY +「=」+ title.categoryClick +「AND」+ KEY_SOURCE +「=」+ title.sourceClick,null,null,null,KEY_TITLEDESC); \t \t} – maebe 2012-03-10 22:08:32

+0

得到int我從以前的意圖拉,它要我改變int sourceClick = extras.getInt(「sourceclick」);靜態。如果我這樣做Bundle extras = getIntent()。getExtras();不能以靜態方式訪問。 – maebe 2012-03-10 22:09:43

回答

0

基礎上的截圖後,改變INT靜態 enter image description here 後,你不應該做靜態引用到你的包。使它們成爲實例變量,並在每次調用onCreate或onResume方法時設置它們。

+0

那麼哪一行是55(應該在onListItemClick內)? //titleClickSound.start(); 我在這裏吠叫錯了樹。 +1幫助我在調試過程中看到錯誤。所以,不是我的位置問題,但與我最終的MediaPlayer titleClickSound = MediaPlayer.create(這,R.raw.button50)的問題; \t titleClickSound.start(); 不知道它爲什麼有時有效,其他時間崩潰,但讓我在正確的道路上。註釋行可以防止錯誤。 – maebe 2012-03-10 23:08:49

+0

全部修復。 TY時間。接受你的回答,讓代表幫助我完成這個任務。 – maebe 2012-03-10 23:30:02