所以我在名为ItemEnergyGreen的类中具有此吸气功能:

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对象已被初始化。

谢谢您的回答,如果这是一个转储问题,对不起,但我对此感到非常疯狂。

最佳答案

我的ItemEnergyGreen类中的textView始终为NULL。


findViewById在当前视图层次结构中查找视图。 TextView可能不是FrameLayout的子级。因此初始化失败导致NullPointerException

另一个原因可能是您引用了错误的ID。

编辑:

错误引用的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);

08-18 02:13