由于上下文的问题,隐含意图无法工作。

问题描述 投票:-1回答:1

这是我的代码:-

最喜爱的活动

import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import androidx.core.content.ContextCompat.startActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import java.security.AccessController.getContext


//this is my calling activity
class FavouriteActivity : AppCompatActivity() {
   override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.favourite_activity)
        val mToolbar: Toolbar = findViewById(R.id.toolbar_favourite)
        setSupportActionBar(mToolbar)
        getSupportActionBar()?.setDisplayHomeAsUpEnabled(true);
        getSupportActionBar()?.setDisplayShowHomeEnabled(true);
        setTitle("Favourite Activity");


        //getting recyclerview from xml
        val recyclerView = findViewById(R.id.recyclerView) as RecyclerView
        //adding a layoutmanager
        recyclerView.layoutManager = LinearLayoutManager(this, RecyclerView.VERTICAL, false)
        //it can be staggered and grid
        //creating our adapter
        val adapter = CustomAdapter(star)   //here I am calling the adapter activity
        //now adding the adapter to recyclerview
        recyclerView.adapter = adapter

    }
  override fun onSupportNavigateUp(): Boolean {
        onBackPressed()
        return true
    }
}

CustomAdapter类

class CustomAdapter(val userList: ArrayList<User>) : RecyclerView.Adapter<CustomAdapter.ViewHolder>() {

    //this method is returning the view for each item in the list
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomAdapter.ViewHolder {
        val v = LayoutInflater.from(parent.context).inflate(R.layout.list_layout_favourite, parent, false)
        return ViewHolder(v)
    }


    //this method is binding the data on the list
    override fun onBindViewHolder(holder: CustomAdapter.ViewHolder, position: Int) {
        holder.bindItems(userList[position])

        holder.imgCopy.setOnClickListener(View.OnClickListener {
            holder.shareString(userList[position])
            Toast.makeText(holder.itemView.getContext(),"Copy Button Clicked", Toast.LENGTH_SHORT).show()

        })
    }

    //this method is giving the size of the list
    override fun getItemCount(): Int {
        return userList.size
    }

    //the class is holding the list view
    class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

        val imgCopy: ImageView = itemView.findViewById(R.id.img_copy) as ImageView

        val textViewName = itemView.findViewById(R.id.tvTitle) as TextView

        fun bindItems(user: User) {

            textViewName.text = user.name

        }

        fun shareString(user: User)
        {
            val message : String = user.name
            val intent = Intent()
            intent.action = Intent.ACTION_SEND
            intent.putExtra(Intent.EXTRA_TEXT,message)
            intent.type = "text/plain"
            startActivity(Intent.createChooser(intent,"Share to :"))    ///Issue occur right here
          }}}

获取错误: Required context , found Intent.

在其他FragmentActivity中,它工作得很好.我已经尝试了各种方法来调用上下文.但任何东西都不起作用.我也从Fragment活动中传递了上下文,但那也不起作用.请让我知道是否有任何方法来启动Intent.因为我总是得到错误和卡住,由于这个。因为我总是得到错误和卡住,由于这个。

android kotlin android-intent android-recyclerview recycler-adapter
1个回答
1
投票

控件 startActivity ViewHolder类中可用的方法和activites中可用的方法是不同的。所以在这个方法(在viewholder中可用)中,第一个参数应该是一个上下文。所以传递的上下文如下。

startActivity(itemView.context, Intent.createChooser(intent,"Share to :"))
© www.soinside.com 2019 - 2024. All rights reserved.