java.lang.NullPointerException:'在空对象引用上避免android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)'

时间:2019-11-20 07:48:04

标签: java android button nullpointerexception

我有一个问题,我有一个没有活动的布局中的按钮(无类),该布局称为item_list_products。该按钮在那里,但是我想在HomeFragment中使用.setOnClickListener事件。有办法解决吗?因为这就是为什么它给了我错误。

Mi codigo: HomeFragment.class

       public class HomeFragment extends Fragment {
          private HomeViewModel homeViewModel;
          Button bttn_comprar;
          public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
          homeViewModel =
                ViewModelProviders.of(this).get(HomeViewModel.class);
          View root = inflater.inflate(R.layout.fragment_home, container, false);
          bttn_comprar = (Button) root.findViewById(R.id.comprarBttn);

          //This is where I get the error, since the button is in a different layout.
          bttn_comprar.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View view) {

                     }
          });
        }

Mi codigo de layout: item_list_productos

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">



    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/idImagen"
            android:layout_width="wrap_content"
            android:src="@mipmap/ic_launcher"
            android:layout_height="wrap_content"
            android:layout_marginTop="15dp"
            android:layout_marginRight="10dp"/>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/nombreId"
                android:layout_marginTop="10dp"
                android:layout_marginRight="10dp"
                android:text="Nombre producto"
                android:layout_marginBottom="5dp"
                android:textSize="20dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

            <TextView
                android:id="@+id/precioId"
                android:text="Precio"
                android:textSize="20dp"
                android:textColor="#000000"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
            <Button
                android:id="@+id/comprarBttn"
                android:layout_width="230dp"
                android:layout_height="35dp"
                android:textColor="#FFFFFF"
                android:background="#248761"
                android:text="Comprar"/>

        </LinearLayout>
    </LinearLayout>


</LinearLayout>

1 个答案:

答案 0 :(得分:0)

您正试图在不是片段布局的子视图的视图上调用onClicklisterner

public class HomeFragment extends Fragment {
      private HomeViewModel homeViewModel;
      Button bttn_comprar;
public View onCreateView(@NonNull LayoutInflater inflater,
                         ViewGroup container, Bundle savedInstanceState) {
      homeViewModel = ViewModelProviders.of(this).get(HomeViewModel.class);
      View root = inflater.inflate(R.layout.item_list_productos, container, false);

      bttn_comprar = (Button) root.findViewById(R.id.comprarBttn);

      bttn_comprar.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View view) {

                 }
      });
    }

将片段布局更改为 item_list_productos.xml ,或将 comprarBttn 按钮添加到 fragment_home.xml 布局。