壁纸应用在Android studio运行时错误



我是新开发人员。我创建了壁纸应用程序。然而,当我运行应用程序时,我得到了一个错误。但是应用程序没有显示任何错误。我检查了所有的步骤都没有找到。java 55中出现错误。和17。行,我想这就是logcat中的样子。我不明白这个问题。这是给出错误的类。代码有什么错误吗?

下面是我使用的实现。

implementation 'com.github.bumptech.glide:glide:4.12.0'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0

这是我的代码

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import java.util.ArrayList;
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {

Context context;
ArrayList<ImageModel> wallpaperlist;
public Adapter(Context context, ArrayList<ImageModel> wallpaperlist) {
this.context = context;
this.wallpaperlist = wallpaperlist;
}
@NonNull
@Override
public Adapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(context).inflate(R.layout.item_layout, null, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull Adapter.ViewHolder holder, int position) {
holder.textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.textView.setMovementMethod(LinkMovementMethod.getInstance());
holder.textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent browswerintent=new Intent(Intent.ACTION_VIEW);
browswerintent.setData(Uri.parse("https://www.pexels.com/"));
browswerintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(browswerintent);
}
});
}
});
Glide.with(context).load(wallpaperlist.get(position).getSrc().getPortrait()).into(holder.imageView);
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(context,setwallpaper.class);
intent.putExtra("image",wallpaperlist.get(position).getSrc().getPortrait());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});

}
@Override
public int getItemCount() {
return wallpaperlist.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;
TextView textView;

public ViewHolder(@NonNull View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.image);
textView=itemView.findViewById(R.id.textview);
}
}
}

控制台日志

2021-08-17 10:21:18.850 12748-12748/com.heragamestudio.a4k_hdlivewallpaper E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.wallpaper, PID: 12748
java.lang.NullPointerException: Argument must not be null
at com.bumptech.glide.util.Preconditions.checkNotNull(Preconditions.java:29)
at com.bumptech.glide.util.Preconditions.checkNotNull(Preconditions.java:23)
at com.bumptech.glide.RequestBuilder.into(RequestBuilder.java:768)
at com.wallpaper.Adapter.onBindViewHolder(Adapter.java:55)
at com.wallpaper.Adapter.onBindViewHolder(Adapter.java:17)
at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7065)
at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7107)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6012)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6279)
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.GridLayoutManager.layoutChunk(GridLayoutManager.java:561)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
at androidx.recyclerview.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:170)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3851)
at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4404)
at android.view.View.layout(View.java:22844)
at android.view.ViewGroup.layout(ViewGroup.java:6389)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1103)
at android.view.View.layout(View.java:22844)
at android.view.ViewGroup.layout(ViewGroup.java:6389)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:22844)
at android.view.ViewGroup.layout(ViewGroup.java:6389)
at androidx.appcompat.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:536)
at android.view.View.layout(View.java:22844)
at android.view.ViewGroup.layout(ViewGroup.java:6389)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:22844)
at android.view.ViewGroup.layout(ViewGroup.java:6389)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
at android.view.View.layout(View.java:22844)
at android.view.ViewGroup.layout(ViewGroup.java:6389)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:784)
at android.view.View.layout(View.java:22844)
at android.view.ViewGroup.layout(ViewGroup.java:6389)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3470)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2938)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1952)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8171)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972)
at android.view.Choreographer.doCallbacks(Choreographer.java:796)
at android.view.Choreographer.doFrame(Choreographer.java:731)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)
2021-08-17 10:21:18.850 12748-12748/com.wallpaper E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

Item_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:padding="10dp">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="230dp"
android:orientation="vertical"
android:backgroundTint="@color/black">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="208dp"
app:cardCornerRadius="5dp">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/iamge"
android:background="@drawable/imageviewbg"
android:scaleType="centerCrop">
</ImageView>

</androidx.cardview.widget.CardView>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="22dp"
android:gravity="center"
android:layout_gravity="bottom"
android:background="@drawable/textviewbg"
android:backgroundTint="@color/black"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Photo"
android:textSize="10sp"
android:padding="5dp"
android:id="@+id/textview"
android:layout_gravity="bottom"
android:gravity="center"
android:background="@color/black"
android:drawableTint="@color/white"
android:textColor="@color/white"
android:drawablePadding="5dp"
android:textAlignment="center"
android:drawableLeft="@drawable/ic_baseline_search_24" />

</LinearLayout>




</LinearLayout>


</RelativeLayout>

您的stacktrace提示您的imageViewnull,在into方法(将此imageView作为参数)中有滑模相关代码中的NPE

java.lang.NullPointerException: Argument must not be null
at com.bumptech.glide.util.Preconditions.checkNotNull(Preconditions.java:29)
at com.bumptech.glide.util.Preconditions.checkNotNull(Preconditions.java:23)
at com.bumptech.glide.RequestBuilder.into(RequestBuilder.java:768)

确保你的膨胀列表项包含ImageViewR.id.imageid

imageView=itemView.findViewById(R.id.image);

编辑:在XML之后添加到问题:您的ImageViewandroid:id="@+id/iamge"id - IAMGE而不是IMAGE。所以上面的findViewById没有找到任何东西,imageView将在执行此方法后保持null

最新更新