2013-09-30 54 views
0

我只是想修改textview(稱爲t)的跨度佈局屬性,以便讓它跨越表中的2列。我使用的代碼跨度列導致NullPointerException

TextView t = new TextView(WineActivity.this); 
t.setTextSize(15); 
TableRow.LayoutParams params = (TableRow.LayoutParams) t.getLayoutParams(); 
params.span = 2; 
t.setLayoutParams(params); 

相當神祕的是,代碼的第二行生成一個NullPointerException。有人知道爲什麼嗎?

+0

請顯示您的XML。 –

+0

textview未在XML中聲明,但在TextView之前有一行t = new TextView(WineActivity.this); – splinter123

+0

在這行代碼中添加一個斷點,當它跨越跨度變化時,檢查「t」的值。它可能不會在運行代碼時創建;因此,擊中返回空值。 –

回答

0

「params」爲空。

我猜t.getLayoutParams也可能爲null,但看到更多的代碼會幫助我們。

+0

我增加了兩行,但其他部分似乎與我無關。在設置textview的文本之後立即將其添加到表格的一行中。所有這些在AsyncTask的PostExecute部分中... – splinter123

0

問題是你打電話(TableRow.LayoutParams)t.getLayoutParams();但在程序已經運行並顯示頁面之前,t不會生成LayoutParams。

最簡單的解決方案就是自己創建新的參數。

TableRow.LayoutParams params = new TableRow.LayoutParams(); 
params.span = 3; 
row.setLayoutParams(params); 
相關問題