2012-10-22 19 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

嘿非常感谢你,但我真的不明白为什么他们已经申请虚幻的逻辑!应该有一个准确的范围! –