意图已贬值,有什么替代方案?

问题描述 投票:0回答:2

我是新的 Android 开发人员,我正在 SDK 28 中使用 minSdkVersion 22 构建一个应用程序。

使用另一个应用程序的代码片段,我现在收到警告消息: “android.content.intent”已弃用。

我发现了一些关于使用 getIntent() 的线程,但我正在 RecyclerViewAdapter 中创建一个新的意图来打开一个新的 Activity。

您可以查看下面我的代码或屏幕截图:

package com.example.chris.projectartifact.bb_Items;

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.chris.projectartifact.R;

import java.util.List;

public class ItemRViewAdapter extends RecyclerView.Adapter<ItemRViewAdapter.MyViewHolder> {

    private Context mContext;
    private List<Items> mData;

    public ItemRViewAdapter(Context mContext, List<Items> mData) {
        this.mContext = mContext;
        this.mData = mData;
    }


    @Override
    public ItemRViewAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view;
        LayoutInflater mInflater = LayoutInflater.from(mContext); //TODO what does that?
        view = mInflater.inflate(R.layout.layout_cardview_cards,parent,false);
        return new ItemRViewAdapter.MyViewHolder(view);
    }

    public void onBindViewHolder(ItemRViewAdapter.MyViewHolder holder, final int position) {
        holder.ivSpell_img.setImageResource(mData.get(position).getItemImage());
        holder.tvSpell_title.setText(mData.get(position).getItemTitle());

        holder.cardView_spells_id.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // This is where my problem is..!
                Intent intent = new Intent(mContext, itemClickable.class);     
                intent.putExtra("itemName", mData.get(position).getItemTitle());
                mContext.startActivity(intent);
            }
        });

    }

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

    public static class MyViewHolder extends RecyclerView.ViewHolder{
        TextView tvSpell_title;
        CardView cardView_spells_id;
        ImageView ivSpell_img;

        public MyViewHolder(View itemView) {
            super(itemView);

            tvSpell_title = itemView.findViewById(R.id.tvSpell_title);
            ivSpell_img = itemView.findViewById(R.id.ivSpell_img);

            cardView_spells_id = itemView.findViewById(R.id.cardView_spells_id);
        }
    }

}

截图:

也许你可以帮我!

编辑新的屏幕截图,修复了 itemClickable 无法识别的问题。

谢谢! CG

android android-intent sectionedrecyclerviewadapter
2个回答
0
投票

Intent 并未被弃用,问题在于您的

itemClickable.class
,因为它未被识别。

要么您以某种方式启用了额外的警告,将 Intent 标识为已弃用,要么您的计算机上确实存在某些内容。


0
投票

我找到了仅使用

intent
的解决方案:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        intent = intent // Yeah, just use `intent` XD

        setContent {

不再需要

getIntent()

© www.soinside.com 2019 - 2024. All rights reserved.