2012-10-22 26 views
0

我有一個簡單的表,它添加了TableRow並動態刪除TableRow。我的要求說要保持表的第一行,因爲它是標題,所以我需要使用removeView(star,end);方法,但它似乎到b不工作,並拋出了NullPointerException。我還用它工作正常的removeAllViews()方法,所以我不能明白爲什麼它拋出NullPointerException異常!我如何解決我的問題? 這是我的代碼: -TableLayout的removeViews()不工作

 TableLayout table = (TableLayout) findViewById(R.id.myTable); 
     table.removeViews(1, table.getChildCount()); 
     //table.removeAllViews(); 
     table.postInvalidate(); 
     bindData(); 

,這是logcat的錯誤: -

10-22 06:16:05.204: E/AndroidRuntime(828): Uncaught handler: thread main exiting due to uncaught exception 
10-22 06:16:05.214: E/AndroidRuntime(828): java.lang.NullPointerException 
10-22 06:16:05.214: E/AndroidRuntime(828): at android.view.ViewGroup.removeViewsInternal(ViewGroup.java:2116) 
10-22 06:16:05.214: E/AndroidRuntime(828): at android.view.ViewGroup.removeViews(ViewGroup.java:2064) 
10-22 06:16:05.214: E/AndroidRuntime(828): at com.techdeedapps.diamond.ViewStockActivity$BackgroungLoadingDiamondList.onPostExecute(ViewStockActivity.java:348) 
10-22 06:16:05.214: E/AndroidRuntime(828): at com.techdeedapps.diamond.ViewStockActivity$BackgroungLoadingDiamondList.onPostExecute(ViewStockActivity.java:1) 
10-22 06:16:05.214: E/AndroidRuntime(828): at android.os.AsyncTask.finish(AsyncTask.java:417) 
10-22 06:16:05.214: E/AndroidRuntime(828): at android.os.AsyncTask.access$300(AsyncTask.java:127) 
10-22 06:16:05.214: E/AndroidRuntime(828): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429) 
10-22 06:16:05.214: E/AndroidRuntime(828): at android.os.Handler.dispatchMessage(Handler.java:99) 
10-22 06:16:05.214: E/AndroidRuntime(828): at android.os.Looper.loop(Looper.java:123) 
10-22 06:16:05.214: E/AndroidRuntime(828): at android.app.ActivityThread.main(ActivityThread.java:4363) 
10-22 06:16:05.214: E/AndroidRuntime(828): at java.lang.reflect.Method.invokeNative(Native Method) 
10-22 06:16:05.214: E/AndroidRuntime(828): at java.lang.reflect.Method.invoke(Method.java:521) 
10-22 06:16:05.214: E/AndroidRuntime(828): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
10-22 06:16:05.214: E/AndroidRuntime(828): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
10-22 06:16:05.214: E/AndroidRuntime(828): at dalvik.system.NativeStart.main(Native Method) 

它完美的作品上,使用這種方法table.removeAllView()。然後刪除所有觀點,爲什麼它不工作使用這種方法table.removeViews(1,table.getChildCount()

+0

代替1使用0,告訴我發生了什麼事。 –

+0

不,當我把0放在沒有問題的時候! –

+0

如果你把0而不是1,你的問題就解決了沒有? –

回答

2

既然你要刪除的所有項目,但你需要確保只刪除「的子元素減去最後一個數」的第一個。即

table.removeViews(1, table.getChildCount() - 1); 

隨着代碼行在你的問題中,你會嘗試刪除一個子視圖比你實際上在你的TableLayout。

+0

嘿非常感謝你,但我真的不明白爲什麼他們已經申請虛幻的邏輯!應該有一個準確的範圍! –