我在用Android Studio。
如果你知道怎么修,请帮忙。好的,当我把数据放入回收器视图函数并称之为应用程序崩溃时(当我删除它时,它工作得非常好,所以我100%确定问题出在PutDataIntoRecycerView函数中),错误代码如下:
Process: com.example.watchitappthatworks, PID: 13438
android.content.res.Resources$NotFoundException: String resource ID #0x3e9
at android.content.res.Resources.getText(Resources.java:444)
at android.widget.TextView.setText(TextView.java:6412)
at com.example.watchitappthatworks.Adaptery.onBindViewHolder(Adaptery.java:54)
at com.example.watchitappthatworks.Adaptery.onBindViewHolder(Adaptery.java:32)
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.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.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 androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1873)
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)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
2021-10-05 12:24:04.827 13438-13438/com.example.watchitappthatworks E/AndroidRuntime: 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)
这是我的主要活动代码主要活动
package com.example.watchitappthatworks;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
List<Movie> movieList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
movieList = new ArrayList<>();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://run.mocky.io/")
.addConverterFactory(GsonConverterFactory.create())
.build();
MovieApi movieApi = retrofit.create(MovieApi.class);
Call<List<Movie>> call = movieApi.getMovies();
call.enqueue(new Callback<List<Movie>>() {
@Override
public void onResponse(Call<List<Movie>> call, Response<List<Movie>> response) {
if (response.code() != 200){
//handle the error and display it
return;
}
List<Movie> movies = response.body();
for (Movie movie : movies){
movieList.add(movie);
}
PutDataIntoRecyclerView(movieList);
}
@Override
public void onFailure(Call<List<Movie>> call, Throwable t) {
}
});
}
private void PutDataIntoRecyclerView(List<Movie> movieList) {
Adaptery adaptery = new Adaptery(this, movieList);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adaptery);
}
}
package com.example.watchitappthatworks;
import android.content.Context;
import android.media.Image;
import android.text.Layout;
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 java.util.List;
import android.content.Context;
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.List;
import java.util.zip.Inflater;
public class Adaptery extends RecyclerView.Adapter<Adaptery.MyViewHolder> {
private Context mContext;
private List<Movie> moviesList;
public Adaptery(Context mContext, List<Movie> moviesList) {
this.mContext = mContext;
this.moviesList = moviesList;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v;
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
v = layoutInflater.inflate(R.layout.movie_item, parent, false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.id.setText(moviesList.get(position).getId());
holder.title.setText(moviesList.get(position).getName());
Glide.with(mContext)
.load(moviesList.get(position).getImage())
.into(holder.img);
}
@Override
public int getItemCount() {
return moviesList.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder{
TextView title;
TextView id;
ImageView img;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
title = itemView.findViewById(R.id.movieTitle);
id = itemView.findViewById(R.id.idText);
img = itemView.findViewById(R.id.imageView);
}
}
}
package com.example.watchitappthatworks;
public class Movie {
private int id;
private String name;
private String image;
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getImage() {
return image;
}
}
holder.id.setText(moviesList.get(position).getId());
这行导致崩溃,为什么要尝试使用电影的整数id设置文本?当然,您希望使用getname()
。
适配器内的代码是
我正在Android中创建一个带有导航视图的tabLayout。我想将图标设置到选项卡布局的选项卡上。当我使用setIcon函数时,应用程序抛出一个空指针异常并崩溃。请帮帮我. 在android.app.activityThread.-wrap11(activityThread.java)在android.app.activityThread$H.HandleMessage(activityThr
mydateutils.java:
我有一个列表,可以在两种布局中进行选择,一种是默认布局,另一种是带有适配器的布局。当用户尚未创建任何时,会首先显示默认的UI布局。用户创建并保存后,布局会切换到布局。布局使用“视图类型”切换,在0和1之间切换。 当我使用这两种方法时,布局之间的切换效果很好: 然后我添加了下面的方法供其他使用,应用程序正在崩溃: 我错过了什么? Logcat: 致命的例外:主java。lang.RuntimeExc
问题内容: 预期结果 单击切换按钮将显示菜单,并向右滑动内容视图。动画结束后,内容视图的布局参数将更新到最终位置。 问题 更新内容视图的最终位置时,该语句导致崩溃。错误消息是 源代码 问题答案: PARAMS应该RESP添加到您的父视图,假设你有作为父视图然后,必须使用。 说明 : 举个例子,并且,它们是不同的独立的类。他们存储有关子视图的不同其他信息。 可以将权重值与每个视图相关联,而不能。 可