【问题标题】:Implicit Intent is not working due to context issue由于上下文问题,隐式意图不起作用
【发布时间】:2020-05-30 14:39:56
【问题描述】:

这是我的代码:-

最喜欢的活动

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
          }}}

出现错误:必需的上下文,找到 Intent。

它在其他 FragmentActivity 中运行良好。 我尝试了各种方法来调用上下文。但什么都行不通。 我也从 Fragment 活动中传递了上下文,但这也不起作用。 请让我知道有什么方法可以启动 Intent。 因为我总是因此而出错并卡住。

【问题讨论】:

  • 您在哪一行出现错误?
  • startActivity(Intent.createChooser(intent,"Share to :")) ///问题就在这里

标签: android kotlin android-intent android-recyclerview


【解决方案1】:

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

startActivity(itemView.context, Intent.createChooser(intent,"Share to :"))

【讨论】:

  • 是的,兄弟,正在工作 startActivity(itemView.context, Intent.createChooser(intent,"Share to :"),null)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
  • 2019-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多