【问题标题】:How can new activity get data image from recycler view新活动如何从回收站视图中获取数据图像
【发布时间】:2019-12-31 22:04:08
【问题描述】:

我想将数据从 RecyclerView 发送到 Activity,但是 RecyclerView 中 Arraylist 中的 Image Data 没有发送到 Activity。

我成功编译了代码,但是每当我打开应用并在 Recycleriew 中选择 1 项时,应用就会被强制关闭。

我希望在 Activity 中显示图像和描述数据,但应用程序总是被强制关闭。

片段类

public class ShipFragment extends Fragment {

    private View v;
    private RecyclerView recyclerShip;
    private ArrayList<Warship> shipList = new ArrayList<>();

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        v = inflater.inflate(R.layout.ship_fragment, container,false);

        recyclerShip = (RecyclerView) v.findViewById(R.id.Recycler_id);
        shipList.addAll(ShipDataRecycler.getShipList());
        recyclerShip.setHasFixedSize(true);
        showRecyclerShipList();

        return v;
    }

    private void showRecyclerShipList() {
        RecyclerAdapter recyclerAdapter;
        recyclerAdapter = new RecyclerAdapter(shipList);
        recyclerShip.setLayoutManager(new LinearLayoutManager(getActivity()));
        recyclerShip.setAdapter(recyclerAdapter);

        recyclerAdapter.setOnItemClickCallback(new RecyclerAdapter.OnItemClickCallback() {
            @Override
            public void onItemClick(Warship zListShip) {
                showSelectedShip(zListShip);
            }
        });
    }
    private void showSelectedShip(Warship ship){
        Intent swap = new Intent(getActivity(), Detail_item.class);
        swap.putExtra(Detail_item.image,ship.getImges());
        swap.putExtra(Detail_item.title, ship.getzTitle());
        swap.putExtra(Detail_item.description, ship.getzDescription());
        startActivity(swap);
    }
}

活动类

public class Detail_item extends AppCompatActivity {

    private ImageView imgDetail;
    private TextView titleDetail, descDetail;
    private ArrayList<Warship> listWarship;
    public static final String title = "Nama";
    public static final String description = "deskripsi";
    public static final String image = "foto";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail_item);

        imgDetail = findViewById(R.id.profil_img_id);
        titleDetail = findViewById(R.id.titleShip_id);
        descDetail = findViewById(R.id.desc_id);

        String imageShip = getIntent().getStringExtra(image);
        String titleShip = getIntent().getStringExtra(title);
        String descShip = getIntent().getStringExtra(description);

        titleDetail.setText(titleShip);
        imgDetail.setImageResource(Integer.parseInt(imageShip));
        descDetail.setText(descShip);
    }
}

崩溃日志

java.lang.RuntimeException:无法启动活动 组件信息{com.kimino.azurlaneshipreview/com.kimino.azurlaneshipreview.Detail_item}: java.lang.NumberFormatException:空 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2706) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767) 在 android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1514) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:163) 在 android.app.ActivityThread.main(ActivityThread.java:6205) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) 引起:java.lang.NumberFormatException:null 在 java.lang.Integer.parseInt(Integer.java:483) 在 java.lang.Integer.parseInt(Integer.java:556) 在 com.kimino.azurlaneshipreview.Detail_item.onCreate(Detail_item.java:38) 在 android.app.Activity.performCreate(Activity.java:6864) 在 >android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) >在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)

【问题讨论】:

  • ship.getImges() 返回什么?

标签: android android-studio android-intent android-recyclerview


【解决方案1】:

您收到错误是因为

String imageShip = getIntent().getStringExtra(image);

正在返回一个空值。当您运行Integer.parseInt(imageShip) 时,您会得到NullFormatException

你应该确保你正在分配

public static final String image = "foto";

作为分配额外值时的键,

//make sure that Detail_item.image == "foto" or that when you get the 
//extra, you are using the same key.
swap.putExtra(Detail_item.image,ship.getImges());

目前该请求正在返回null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    相关资源
    最近更新 更多