Попытка вызвать виртуальный метод 'void android .widget.ImageView.setOnClickListener (android .view.View $ OnClickListener)' для пустой ссылки на объект - PullRequest
0 голосов
/ 09 января 2020

Я хочу нажать на изображение и получить текстовый вид текста, но я получаю эту ошибку. Попытка вызвать виртуальный метод 'void android .widget.ImageView.setOnClickListener (android .view.View $ OnClickListener)' при нулевом значении. ссылка на объект

XML

          <ImageView
            android:id="@+id/imgClick"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:srcCompat="@mipmap/ic_launcher"
            />
        <TextView
            android:id="@+id/Message"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:text="text yeah"
            android:visibility="invisible"/>

Здесь я хочу перейти к перечисленным выше элементам XML !!

Фрагмент

 class HomeFragment : Fragment() {

 var newList: MutableList<News> = mutableListOf()

 companion object {
     fun newInstance() =HomeFragment()
}

private lateinit var viewModel: HomeViewModel

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    return inflater.inflate(R.layout.fragment_gallery, container, false)
}

override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)
    viewModel = ViewModelProviders.of(this).get(HomeViewModel::class.java)


    recyclerView.setHasFixedSize(true)
    recyclerView.layoutManager = LinearLayoutManager(this.context)


    // TODO: Use the ViewModel

    val lastNewsObserver = Observer<List<News>>
    {
        // Access the RecyclerView Adapter and load the data into it
            newList -> recyclerView.adapter = NewsAdapter(newList,this.context!!)

    }

    viewModel.getNews().observe(this, lastNewsObserver)

    val img: ImageView = imageView.findViewById(R.id.imgClick)
    val msg: TextView = textView.findViewById(R.id.Message)
    img.setOnClickListener{
        val intent = Intent()
        intent.action = Intent.ACTION_SEND
        intent.putExtra(Intent.EXTRA_TEXT, msg.text)
        intent.type = "text/plain"

        startActivity(intent)
    }
}

 }

1 Ответ

0 голосов
/ 09 января 2020

imgClick - это null. Невозможно сказать почему, не видя определения и кода инициализации, но если это нормальная переменная, вам нужно инициализировать ее после создания представления. Я думаю, что если вы инициализируете его с помощью findViewById, вы делаете это до onCreateView, после чего представление еще не было создано, поэтому оно возвращает null.

...