Урок 9. Обработчики событий на примере Button.

Обсуждение уроков
Аватара пользователя
armory
Сообщения: 1
Зарегистрирован: 15 июн 2017, 18:09

Re: Урок 9. Обработчики событий на примере Button.

Сообщение armory » 15 июн 2017, 18:11

привет всем

Код: Выделить всё

package ru.startandroid.p0091onclickbuttons;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

    TextView tvOut;
    Button btnOk;
    Button btnCancel;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // найдем View-элементы
        tvOut = (TextView) findViewById(R.id.tvOut);
        btnOk = (Button) findViewById(R.id.btnOk);
        btnCancel = (Button) findViewById(R.id.btnCancel);

    }
}
Подскажите, пожалуйста, почему у меня подсвечивает красным все буквы R?
Android Studio 2.3.3

Варианты решения ситуации не очень нравятся:
1.png
1.png (11.5 КБ) 6691 просмотр
P.S. заново создал модуль и аккуратно скопипастил данные из урока - всё работает, и больше не ругается на R.
Вопрос более не актуален

bios90
Сообщения: 1
Зарегистрирован: 22 окт 2017, 22:51

Re: Урок 9. Обработчики событий на примере Button.

Сообщение bios90 » 22 окт 2017, 22:57

Подскажите пожалуйста. Создавал кнопки третьим способ из видео(добавлял onClick в XML файл и все работало,приложение запускал через эмулятор кнопки нажимались,текст менялся). Захотел переделать на первый способ. В итоге все время выдает ошибку в эмуляторе Unfortinatly MyProgramLand has stopped. В файле Java и в XML файлах ошибок не показывает.

Вот лог ошибки

Код: Выделить всё

10-22 19:45:26.824 3410-3410/com.programm.first.my.myprogrammland E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                    Process: com.programm.first.my.myprogrammland, PID: 3410
                                                                                    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.programm.first.my.myprogrammland/com.programm.first.my.myprogrammland.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
                                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
                                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
                                                                                        at android.app.ActivityThread.access$800(ActivityThread.java:151)
                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
                                                                                        at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                        at android.os.Looper.loop(Looper.java:135)
                                                                                        at android.app.ActivityThread.main(ActivityThread.java:5254)
                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                        at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
                                                                                     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
                                                                                        at com.programm.first.my.myprogrammland.MainActivity.onCreate(MainActivity.java:32)
                                                                                        at android.app.Activity.performCreate(Activity.java:5990)
                                                                                        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
                                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
                                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                                                                                        at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                                                                                        at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                        at android.os.Looper.loop(Looper.java:135) 
                                                                                        at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                                        at java.lang.reflect.Method.invoke(Native Method) 
                                                                                        at java.lang.reflect.Method.invoke(Method.java:372)

NikiArt
Сообщения: 1
Зарегистрирован: 26 июл 2018, 11:17

Re: Урок 9. Обработчики событий на примере Button.

Сообщение NikiArt » 26 июл 2018, 11:44

Добрый день.
Подскажите пожалуйста, как обработать такое сообщение: 'android.widget.button' is deprecated?
2018-07-26_11-29-20.png
2018-07-26_11-29-20.png (23.38 КБ) 4955 просмотров
Также, на LinearLayout появляется подсказка-действие Override Resource In Other Configuration

Я так понимаю, что это все из-за implementation 'com.android.support:appcompat-v7:28.0.0-alpha3' ?

Vsiniak
Сообщения: 8
Зарегистрирован: 03 авг 2020, 10:30

Re: Урок 9. Обработчики событий на примере Button.

Сообщение Vsiniak » 03 авг 2020, 12:52

Код: Выделить всё

// создаем обработчик нажатия
        OnClickListener oclBtnOk = new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Меняем текст в TextView (tvOut)
                tvOut.setText("Нажата кнопка ОК");
            }
        };
 
        // присвоим обработчик кнопке OK (btnOk)
        btnOk.setOnClickListener(oclBtnOk);
Этот код можно заменить на более компактный. Итог

Код: Выделить всё

btnOk.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                tvOut.setText("Нажата кнопка ОК");
            }
        });
Обращайтесь в ЛС. Помогу.

misterx1970
Сообщения: 1
Зарегистрирован: 23 окт 2021, 23:19

Re: Урок 9. Обработчики событий на примере Button.

Сообщение misterx1970 » 23 окт 2021, 23:34

Привет всем!
Столкнулся с проблемой нерабочего кода примера. Возможно проблема в том что мы работаем не с Java а с Kotlin? Поправьте если не прав, я новичок. Порывшись в интернете нашел решение. Может кому поможет разобраться. Работаю в Android Studio 2020.3.1

Вот рабочий вариант:

Код: Выделить всё

package ru.startandroid.p0091onclickbuttons

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView

class MainActivity : AppCompatActivity() {
    private lateinit var tvOut: TextView
    private lateinit var btnOk: Button
    private lateinit var btnCancel: Button
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        tvOut = findViewById(R.id.tvOut)
        btnOk = findViewById(R.id.btnOk)
        btnCancel = findViewById(R.id.btnCancel)
        btnOk.setOnClickListener { tvOut.setText("Нажата кнопка Ок") }
        btnCancel.setOnClickListener { tvOut.setText("Нажата кнопка Cancel") }
    }
}
Помог мне следующий ресурс:
http://developer.alexanderklimov.ru/and ... okitty.php

Ответить