2014-03-29 65 views
1

所以我在一類的getter函數調用ItemEnergyGreen:NullPointerExeption上getTextView在Android的

public TextView getTextView(FrameLayout fl) { 
    textView = (TextView) fl.findViewById(R.id.textview_energyOrange_quantity); 
    return textView; 
} 

我現在想打電話從另一類這個梅索德:

//Item Energy Green 
    itemEnergyGreenFrameLayout  = (FrameLayout) inflater.inflate(R.layout.item_energy_green_layout, null, false); 
    itemEnergyGreenQuantityTextView = itemEnergyGreen.getTextView(itemEnergyGreenFrameLayout); 
    btn_ItemEnergyGreen    = (ImageButton) itemEnergyGreenFrameLayout.findViewById(R.id.btn_energyGreenItem_use); 
    btn_ItemEnergyGreen.setOnClickListener(this); 

函數調用在第2行中,我將frameLayout傳遞給getter函數,但我的ItemEnergyGreen類中的textView始終爲NULL。

錯誤發生時,我想打電話的setText對我的看法:

public void itemEnergyGreenUpdateNumber() { 
    int quantity = itemEnergyGreen.getQuantity(); 
    String qstring = String.valueOf(quantity); 
    itemEnergyGreenQuantityTextView.setText(qstring); 
} 

這是XML-的FrameLayout即得到膨脹:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/ItemEnergyGreenFrameLayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<ImageButton 
    android:id="@+id/btn_energyGreenItem_use" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:scaleType="fitXY" 
    android:src="@drawable/item_energydrink_green" > 
</ImageButton> 

<TextView 
    android:id="@+id/textview_energyGreen_quantity" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" 
    android:background="#F00" 
    android:clickable="false" 
    android:padding="2dp" 
    android:textColor="#FFF" 
    android:textStyle="bold" > 
</TextView> 
</FrameLayout> 

這是爲什麼?

PS。在調用getter函數的地方,itemEnergyGreen對象已經被初始化。

謝謝你的回答,並且很抱歉如果這是一個轉儲問題,但我會爲此瘋狂。

+0

你有沒有文本設置爲textview之前,你打電話?像在你的XML?甚至textview.settext?或者它是空的? – La5t5tarfighter

+0

向你展示XML和日誌錯誤請問 – Saggy

+0

你確定'TextView'屬於'item_energy_green_layout.xml'.Post xml – Raghunandan

回答

2

我的ItemEnergyGreen類中的textView始終爲NULL。

findViewById查找當前視圖層次結構中的視圖。可能TextView不是FrameLayout的孩子。所以初始化失敗導致NullPointerException

另一個原因可能是您引用了錯誤的ID。

編輯:

標識在錯誤

<TextView 
    android:id="@+id/textview_energyGreen_quantity" 

更改引用該

textView = (TextView) fl.findViewById(R.id.textview_energyOrange_quantity); 

textView = (TextView) fl.findViewById(R.id.textview_energyGreen_quantity); 
+0

@DannielR你在哪裏可以調用這個'itemEnergyGreenUpdateNumber()'可以在Textview初始化之前調用 – Raghunandan

+0

錯誤的ID是錯誤 非常感謝,這麼一個小細節:(我需要一個暫停^^ – DannielR

0

試試這個

private View mView; 
mView =inflater.inflate(R.layout.item_energy_green_layout, null, false); 
itemEnergyGreenQuantityTextView = itemEnergyGreen.getTextView(mView); 
相關問題