【问题标题】:NullPointerException Error without line number. How can I get the line number that is causing this error in Android Studio?NullPointerException 没有行号的错误。如何在 Android Studio 中获取导致此错误的行号?
【发布时间】:2020-01-20 08:15:50
【问题描述】:

我正在 android studio 中制作应用程序。当我单击一个按钮时,我的应用程序崩溃了。在日志中,我看到 NullPoniterException 错误,没有我写的行号。这是我的 Logcat:(这些是不是我编写的内部应用程序代码。我需要我写的导致错误的行号。)

2020-01-20 14:06:02.790 16599-16599/com.tanvirgeek.sync E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.tanvirgeek.sync, PID: 16599
java.lang.NullPointerException: Attempt to read from field 'android.view.View androidx.recyclerview.widget.RecyclerView$ViewHolder.itemView' on a null object reference
    at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:7079)
    at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6235)
    at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
    at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
    at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
    at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
    at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
    at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
    at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3540)
    at android.view.View.measure(View.java:20361)
    at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:825)
    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:511)
    at android.view.View.measure(View.java:20361)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6355)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:214)
    at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
    at android.view.View.measure(View.java:20361)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6355)
    at androidx.appcompat.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:401)
    at android.view.View.measure(View.java:20361)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6355)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:214)
    at android.view.View.measure(View.java:20361)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6355)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1705)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:797)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:657)
    at android.view.View.measure(View.java:20361)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6355)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:214)
    at com.android.internal.policy.DecorView.onMeasure(DecorView.java:750)
    at android.view.View.measure(View.java:20361)
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2896)
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1778)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2051)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1663)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7546)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:916)
    at android.view.Choreographer.doCallbacks(Choreographer.java:718)
    at android.view.Choreographer.doFrame(Choreographer.java:650)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:902)
    at android.os.Handler.handleCallback(Handler.java:836)
    at android.os.Handler.dispatchMessage(Handler.java:103)
    at android.os.Looper.loop(Looper.java:232)
    at android.app.ActivityThread.main(ActivityThread.java:6802)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1103)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

我怎样才能得到我写的导致错误的行?上面这些行号是内部应用代码,不是我写的。

RecyclerAdapter 代码:

public class  RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyviewHolder> {

private ArrayList<Contact> contactArrayList = new ArrayList<>();

public RecyclerAdapter(ArrayList<Contact> arrayList){

    this.contactArrayList = arrayList;
}

@NonNull
@Override
public MyviewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view,parent,false);
    return null;
}

@Override
public void onBindViewHolder(@NonNull MyviewHolder holder, int position) {
    holder.name.setText(contactArrayList.get(position).getName());
    int msyncStatus = contactArrayList.get(position).getSyncstatus();
    if(msyncStatus == DBContact.SYNC_STATUS_OK){
        holder.msyncStatus.setImageResource(R.drawable.tick);
    }else{
        holder.msyncStatus.setImageResource(R.drawable.sync);
    }
}

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

public static class MyviewHolder extends RecyclerView.ViewHolder{

    ImageView msyncStatus;
    TextView name;

    public MyviewHolder(@NonNull View itemView) {
        super(itemView);
        msyncStatus = (ImageView) itemView.findViewById(R.id.imgSynch);
        name = (TextView) itemView.findViewById(R.id.txtName);
    }
}
}

谢谢。

【问题讨论】:

  • ehm... 行号就在堆栈跟踪中吗?没有行号是什么意思?
  • 请检查这可能对你有帮助stackoverflow.com/questions/41895466/…
  • at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:7079) 就在堆栈跟踪中。
  • 发布您的代码以便我们为您提供帮助
  • 适配器或 Viewholder 类出错。能否分享适配器和 Viewholder 类的代码?

标签: java android android-studio


【解决方案1】:

你的问题的答案是:你不能得到行号。

这仅仅是因为错误发生在RecyclerView 级别,它不知道视图的创建方式或位置(您的代码)。

话虽如此,这个错误很常见。在您的情况下,错误来自您的onCreateViewHolder 返回的空视图。解决问题所需要做的就是返回 view 实例。

【讨论】:

  • 那些创建 android studio 的人可以给出行号。看起来 android studio 不是太完美。 :(
  • 我同意这里还有改进的余地。我至少希望 Android Studio 标记return null 语句。看到注解@NonNull,这让我更惊讶的是方法没有被标记。
【解决方案2】:

您在 onCreateViewHolder 方法中返回 null。你应该返回view

return null; 更改为return view;

【讨论】:

    猜你喜欢
    • 2018-05-18
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 2012-05-03
    • 2016-08-24
    • 2017-10-04
    相关资源
    最近更新 更多