Переменная View не распознана и setOnClickListener недоступен? - PullRequest
0 голосов
/ 02 октября 2019

Я новичок в Android dev и работаю над своим первым приложением. Это довольно простое приложение, но я сталкиваюсь со странной ошибкой. Я хочу поместить список щелчков на изображение, чтобы сначала инициализировать переменную ImageView, а затем, когда я пытаюсь сослаться на нее, она не отображается при автозаполнении. Кроме того, когда я пытаюсь вызвать setOnClickListener (), это также выдает ошибку. Возможно, я забыл что-то важное. Пожалуйста, порекомендуйте. Мои XML и Java для основной деятельности вставлены ниже

Я пытался: - сделать недействительными кэши и перезапустить - перезапустить Android Studio - перезапустить ПК - очистить проект - заново создать проект с нуля

Моя основная деятельность Java:

package com.example.android.obgynconference2020;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    ImageView startImg = (ImageView)findViewById(R.id.starting);

}

Моя основная деятельность XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/start"
        android:id="@+id/starting"/>


</LinearLayout>

Ответы [ 2 ]

0 голосов
/ 02 октября 2019
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    ImageView startImg = (ImageView)findViewById(R.id.starting); //<------- this is the problem

    }

инициализируйте переменную startImg в методе onCreate (), как показано ниже

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageView startImg = (ImageView)findViewById(R.id.starting);
// and put here onclick listner

    }



}
0 голосов
/ 02 октября 2019

Всегда инициализируйте ваши виджеты внутри метода onCreate и так Onclickliteners

onCreate(){.....
ImageView startImg = (ImageView)findViewById(R.id.starting)
starImg.setOnClickListener....... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...