2015-05-05 64 views
1

我嘗試製作測驗應用程序。我需要知道選擇了哪個單選按鈕,並用真正的正確答案來檢查。如果需要知道,我將trueResult(score var。)發送到另一個ResultActivity類。Radiogroup的NullPointerException

if(((RadioButton) grp_options.getChildAt(grp_options.getCheckedRadioButtonId())).getText().equals(rightAnswers.get(i))) // Error at this expression 
    { 
     trueResult++; 
    } 

當我改變下面

grp_options.getChildAt(grp_options.getCheckedRadioButtonId()))

部分到此

grp_options.getChildAt(3))

它正確地比較了第四個選項和真實答案。但我需要了解哪些rb用戶檢查過。所以,問題就在這裏:

grp_options.getCheckedRadioButtonId()

畢竟,應用程序給我NPE。這是日誌。如果有更好的方式來完成這項工作或者我缺少一點,我很樂意學習。

+0

這是NPE日誌。 http://pastebin.ubuntu.com/10991859/ – nsarchar

回答

0

getCheckedRadioButtonId返回視圖ID,即。 android:id

如果已經設置在佈局的ID,你應該能夠與findViewById檢索元素:

grp_options.findViewById(grp_options.getCheckedRadioButtonId()) 
+0

不幸的是同樣的錯誤。 – nsarchar

+0

你有你的佈局中設置每個單選按鈕的ID? – tachyonflux

+0

是的。 rdb_optionA,b,c和d – nsarchar

0

我不知道是肯定的,但你可以試試這個:

取而代之的是:

if(((RadioButton) grp_options.getChildAt(grp_options.getCheckedRadioButtonId())).getText().equals(rightAnswers.get(i))) 

試試這個:

if(((RadioButton) findViewById(grp_options.getCheckedRadioButtonId())).getText().toString().equals(rightAnswers.get(i))) 

我認爲你的問題可能是你忘記在你的解決方案中使用toString(),也許這工作得很好:

if(((RadioButton) grp_options.getChildAt(grp_options.getCheckedRadioButtonId())).getText().toString().equals(rightAnswers.get(i))) 
+0

不幸的是同樣的錯誤 – nsarchar

+0

只是一個簡單的問題。 'rightAnswers'是一個對象,對吧?你是否正在初始化調用.get()方法? – Luiz

+0

謝謝你的時間。 ;)解決它,但與意大利麪代碼.http://pastebin.ubuntu.com/10992464/ – nsarchar