簡體   English   中英

java.lang.NullPointerException:嘗試對空對象引用調用虛擬方法。 應用程序在運行時崩潰

[英]java.lang.NullPointerException: Attempt to invoke virtual method on a null object reference. App crashes on run

需要有關此錯誤日志的幫助。 嘗試創建一個送餐應用程序,這是 Android Studio 上所述應用程序的源代碼。 每次運行該應用程序時,該應用程序都會崩潰。:

    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
        at com.example.swiftbites.Adapters.OrdersAdapter.onBindViewHolder(OrdersAdapter.java:43)
        at com.example.swiftbites.Adapters.OrdersAdapter.onBindViewHolder(OrdersAdapter.java:19)

代碼:

訂單適配器.java

package com.example.swiftbites.Adapters;

import ...

public class OrdersAdapter extends RecyclerView.Adapter<OrdersAdapter.viewHolder>{

    ArrayList<OrdersModel> list;
    Context context;

    public OrdersAdapter(ArrayList<OrdersModel> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public viewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.order_sample, parent, false);
        return new viewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull viewHolder holder, int position) {

        final OrdersModel model = list.get(position);
        holder.orderImage.setImageResource(model.getOrderImage());
        holder.soldItemName.setText(model.getSoldItemName());
        holder.orderNumber.setText(model.getOrderNumber());
        holder.price.setText(model.getPrice());
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public class viewHolder extends RecyclerView.ViewHolder {
        ImageView orderImage;
        TextView soldItemName, orderNumber, price;

        public viewHolder(@NonNull View itemView) {
            super(itemView);
            orderImage = itemView.findViewById(R.id.orderImage);
            soldItemName = itemView.findViewById(R.id.orderItemName);
            orderNumber = itemView.findViewById(R.id.orderNumber);
            price = itemView.findViewById(R.id.orderPrice);
        }
    }
}

在您的適配器中,您將獲得名為orderPrice 的id,但在定義的 xml 中,沒有定義為 this 的 id。 這就是你崩潰的原因。 您需要textView6重命名為orderPrice也可以在適配器改變orderPricetextView6如下

改變這個

 price = itemView.findViewById(R.id.orderPrice);

對此

 price = itemView.findViewById(R.id.textView6);

檢查你的 textView id 它是錯誤的,這就是為什么 android studio 產生空指針異常因為你 setText() 在另一個 textView 而不是這個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM