【问题标题】:Intent is depreciated, What is the alternative?意图贬值,有什么替代方案?
【发布时间】:2018-10-15 03:58:58
【问题描述】:

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

使用来自另一个应用程序的代码片段我现在收到警告消息: '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

【问题讨论】:

  • 在文档中,我找不到任何地方说意图已弃用
  • 嘿@VivekMishra。感谢您检查文档。你知道这可能是从哪里来的吗?我将这个类从一个 sdk 26 程序复制到一个 sdk 28 程序中。这会造成问题吗?
  • 可能是因为找不到itemClickable.class
  • 也检查你的导入。
  • 不,不是因为itemClickable。显然改变了这一点。导入 com.example.chris.projectartifact.R;导入android.content.Context;导入android.content.Intent;导入android.support.v7.widget.CardView;导入 android.support.v7.widget.RecyclerView;导入 android.view.LayoutInflater;导入android.view.View;导入android.view.ViewGroup;导入android.widget.ImageView;导入 android.widget.TextView;导入 java.util.List;那是我的进口。不过,我不知道如何正确编辑它们:s

标签: android android-intent sectionedrecyclerviewadapter


【解决方案1】:

Intent 未被弃用,问题在于您的itemClickable.class,因为它无法识别。

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

【讨论】:

  • 对不起先生。这不是问题。为了让我相信你,我将添加一个新的屏幕截图来删除该问题。
  • 添加了我的 Android Studio 3.2.1 的截图。我建议重启(Android Studio/PC),清理项目,将 Android Studio 重置为默认设置!
  • 嘿。我这样做了,但并没有改变结果。你能想象它与我使用 RecyclerView.Adapter 作为扩展有关吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-16
  • 2019-03-17
  • 2023-03-13
  • 1970-01-01
  • 2022-10-05
  • 2022-06-10
  • 2022-09-29
相关资源
最近更新 更多