从另一个布局膨胀按钮

时间:2018-01-23 17:25:22

标签: android android-layout

我遇到了从另一个布局中膨胀按钮的问题。 这是第一个带有ListView的代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_item_produto);

  btnAddNoCarrinho.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "Testing", Toast.LENGTH_SHORT).show();
            }
        });

这是我的另一个布局,带有TableLayout和我需要膨胀的按钮。

<ImageButton
            android:id="@+id/btnAddNoCarrinho"
            android:layout_width="50dp"
            android:layout_height="30dp"
            android:layout_marginStart="310dp"
            android:layout_marginTop="3dp"
            android:onClick="onClick"
            android:background="@android:color/holo_green_dark"
            android:clickable="true"
            android:focusable="true"
            android:src="@drawable/ic_addproduct">
        </ImageButton>

错误是:引起:java.lang.NullPointerException:尝试在空对象引用上调用虚方法'void android.widget.ImageButton.setOnClickListener(android.view.View $ OnClickListener)'

有没有办法让这种布局膨胀?提前谢谢。

2 个答案:

答案 0 :(得分:1)

图片按钮应该是您活动的视图层次结构的一部分。 Android只能查找属于list_item_produto.xml或包含在其中的视图。

如果您的图像按钮位于其他文件中,则需要将其包含在list_item_produto.xml中。要包含布局,您必须使用the include tag

答案 1 :(得分:0)

您需要实例化按钮:

ImageButton btnAddNoCarrinho = (ImageButton) findViewById(R.id.btnAddNoCarrinho);

所以整个代码是:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_item_produto);

ImageButton btnAddNoCarrinho = (ImageButton) findViewById(R.id.btnAddNoCarrinho);

  btnAddNoCarrinho.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "Testing", Toast.LENGTH_SHORT).show();
            }
        });

仔细检查您的btnAddNoCarrinho按钮是否在setContentView

中正在膨胀的布局文件中