Re: Щелчок кнопки/Счётчик ворон

Как по нажатию, вместо текста вывести картинку?

Для того, чтобы вывести текст нужно:
public void onClick(View view){
        TextView helloTextView = (TextView)findViewById(R.id.textView);
        helloTextView.setText("Hello Kitty!");
    }




Я в свой проект уже закинул картинку и задал id imageView.
Немного порассуждав, я сделал так:
public void onclick(View view) {

        ImageView qwe = (ImageView)findViewById(R.id.imageView);
        qwe.

    }

А дальше я не понимаю как вывести картинку.

Re: Щелчок кнопки/Счётчик ворон

Читаем все о ImageView (http://developer.alexanderklimov.ru/and … geview.php) и выводим картинку

Re: Щелчок кнопки/Счётчик ворон

Здравствуйте Александр! У меня такая проблема:
В строке  mInfoTextView.setText("Я насчитал " + ++mCount + " ворон");
выдается ошибка Error:(22, 17) error: cannot find symbol variable mInfoTextView, подскажите пожалуйста, как решить проблему

public class MainActivity extends AppCompatActivity {

    private Button mCrowsCounterButton;
    private int mCount = 0;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mCrowsCounterButton = (Button)findViewById(R.id.buttonCrowsCounter);
        mCrowsCounterButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mInfoTextView.setText("Я насчитал " + ++mCount + " ворон");
            }
        });
    }

    public void OnClick(View view) {
        TextView helloTextView = (TextView)findViewById(R.id.textView);
        helloTextView.setText("Здарова Геннадий!");

    }

Re: Щелчок кнопки/Счётчик ворон

Вам говорят, что не могут найти переменную mInfoTextView. Я согласен со студией, так как тоже не могу найти.

Re: Щелчок кнопки/Счётчик ворон

Здравствуйте Александр. У меня проблема заключается в том, что приложение попросту не открывается и выбивает ошибку. Помогите пожалуйста, может в коде что-то не так)



MainActivity.java
package ru.dimas.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private Button mCrowsCounterButton=(Button)findViewById(R.id.buttonCrowsCounter);
    private int mCount=0;
    private TextView mInfoTextView=(TextView)findViewById(R.id.textView);
    private  String mA;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mCrowsCounterButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                mA ="Я насчитал "+ ++mCount + " ворон";
                mInfoTextView.setText(mA);
            }
        });
    }

    public void onClick(View view) {
        mInfoTextView.setText("Ты кто?");
    }
}

P.S. почему-то ругается на записи в имени кнопок, будь то русский или англ текст, и так же что-то не нравилось в главном коде, хотя ошибки вроде как пофиксил

Re: Щелчок кнопки/Счётчик ворон

компоненты нужно инициализировать внутри методов, а вы это сделали прямо в классе. Перенесите код в  onCreate()

Re: Щелчок кнопки/Счётчик ворон

1) Хотел уточнить, при выводе текста в TextView нельзя конкатенировать строковые ресурсы? Например так:

mTextView.setText(R.string.crows1 + R.string.crows2);

Нужно обязательно преобразовывать их в тип String, потому что когда выводится один строковый ресурс, то все выводится нормально?
2) Второй вопрос, почему в строковом ресурсе при указании пробела он не отображается при выводе в TextView? Например:

<string name="crows1">Я насчитал </string>

в конце фразы стоит пробел, но при выводе на экран в TextView он исчезает.

Re: Щелчок кнопки/Счётчик ворон

R.string.xxx - это просто число, которое генерируется студией. Выходит, что вы складываете два числа и получаете какое-то несуществующее число, с которым не сопоставлена никакая строка. Поэтому, действительно, нужно сначала получить строку из ресурсов, а уже потом их соединять.

А второй вопрос оказался интересным. Я сам не знал об этой особенности. Как вариант, можно использовать кавычки
<string name="crows1">"Я насчитал "</string>

34 (edited by kot-zverek 2017-01-17 17:58:29)

Re: Щелчок кнопки/Счётчик ворон

Здравствуйте.
У меня возник вопрос, я может чтото гдето упустил... и все же.

1) это что вообще и с чем едят?
import android.view.View

2) почему дублируется в скобках View?
public void onClick(View view)

3) тут для меня вообще магия, V это вроде и не переменная и не класс.. что это и почему V???
public void onClick(View v)

4) ааа еще вопрос, при объявлении каждый раз нужно писать - private
    private Button mCrowsButton;
    private  TextView mInfoText;
    private int mCount = 0;
или можно как то это через один оператор делать как в делфи к примеру через запятую?

Re: Щелчок кнопки/Счётчик ворон

1 импорт для сокращения полного имени, чтобы не писать onClick(android.view.View view)
2 Ничего там не дублируется. View - это класс, view - это экземпляр класса
3 v - это как раз переменная. v, view, cat, dog - любое подойдет. это просто имя, которое выбирается программистом
4 не пишите. Можно через запятую, если бы это были только кнопки, только текстовые поля или только числа. У вас же три разных вещи, как вы их собираетесь писать через запятую?
короче, вам лучше сначала Java изучить.

36 (edited by gusev.vf 2017-03-27 23:50:01)

Re: Щелчок кнопки/Счётчик ворон

у меня все получилось, даже сделал кнопки сбрасывающие счетчики ворон и котов, остался один непонятный момент в синтаксисе:
....
private Button mCrowsCounterButton; //если я правильно понимаю, мы создаем объект класса Button
..........
mCrowsCounterButton = (Button)findViewById(R.id.buttonCrowsCounter);
//в строчке строчке мы вызываем метод findViewById в классе Button, но пишем почему-то через "()" а не через точку
Поправьте меня пожалуйста, где я не прав.
Было бы здорово если бы вы объяснили эту строчку подробно
mCrowsCounterButton = (Button)findViewById(R.id.buttonCrowsCounter);

Re: Щелчок кнопки/Счётчик ворон

Не создаём, а объявляем.
Далее метод активности findViewById() требует указать ресурс идентификатора. Сам метод возвращает View, поэтому нужно явно указать, какой именно компонент нам нужен, для этого в круглых скобках (Button).

Re: Щелчок кнопки/Счётчик ворон

Спасибо эту ошибку исправил(ошибка из за не внимательности)
но появилась другая проблема кнопки налаживаются  друг на друга как бы я их не перетаскивал.
вот что пишет андроид студио

редактор планировки позволяет разместить виджеты в любом месте на холсте, и он записывает текущую позицию с атрибутами времени проектирования (например, layout_editor_absoluteX.) эти атрибуты не применяются во время выполнения, так что если вы нажимаете ваш план на устройстве, виджеты могут появиться в другом месте, чем показано в редакторе. Чтобы исправить это, убедитесь, что виджеты имеет горизонтальные и вертикальные препятствия, перетаскивая от края соединения.

перевод так себе, вот как это исправить.

Re: Щелчок кнопки/Счётчик ворон

На сайте в разделе "Palette" (слева) есть информация по контейнерам (подраздел "Layouts") - там рассмотрены основные контейнеры, и как именно в них выравниваются компоненты. Как раз то, что ищете.

40 (edited by maxer-god 2017-04-06 12:09:59)

Re: Щелчок кнопки/Счётчик ворон

Спасибо! за урок. в начале тоже не заметил что разметка немного другая чем в уроке. кнопки наложились. ДЗ сделал и немного усложнил. добавил еще TextViev чтоб счетчики отображались обновремено.

ток пока не знаю как убрать Hello Kitty!
но думаю и до этого доберусь ))))

Re: Щелчок кнопки/Счётчик ворон

У Вас в данном уроке ошибка в строке

TextView helloTextView = (TextView)findViewById(R.id.textView);

textView - написано с маленькой буквы и выдает из-за этого ошибку.

Re: Щелчок кнопки/Счётчик ворон

У меня уже на третьем уроке, все элементы постоянно в левом верхнем углу. Визуальное перетаскивание или прописывание вручную ничего не помогает и никак не реагирует. Подскажите пожалуйста в чем дело.

Re: Щелчок кнопки/Счётчик ворон

Kylaksizov wrote:

У Вас в данном уроке ошибка в строке

TextView helloTextView = (TextView)findViewById(R.id.textView);

textView - написано с маленькой буквы и выдает из-за этого ошибку.

Ошибка у вас. Не копируйте, а пишите ручками. Тогда не будет таких вопросов.

Re: Щелчок кнопки/Счётчик ворон

Kylaksizov wrote:

У меня уже на третьем уроке, все элементы постоянно в левом верхнем углу. Визуальное перетаскивание или прописывание вручную ничего не помогает и никак не реагирует. Подскажите пожалуйста в чем дело.

Обсуждалось - http://forum.alexanderklimov.ru/viewtop … =731#p731.

Re: Щелчок кнопки/Счётчик ворон

Как описать счётчик первым методом, можно получить пример?

Re: Щелчок кнопки/Счётчик ворон

iulskiy, в уроке же есть все необходимое. Просто берете и в обработчик клика пишете все тот же код:

mInfoTextView.setText("Я насчитал " + ++mCount + " ворон");

Re: Щелчок кнопки/Счётчик ворон

NeferSky wrote:

iulskiy, в уроке же есть все необходимое. Просто берете и в обработчик клика пишете все тот же код:

mInfoTextView.setText("Я насчитал " + ++mCount + " ворон");

Как методом onClick описать счётчик? Про второй мне всё понятно, хочется увидеть пример первого.

Re: Щелчок кнопки/Счётчик ворон

iulskiy wrote:

Как методом onClick описать счётчик? Про второй мне всё понятно, хочется увидеть пример первого.

Ох, да ладно, Вы шутите, наверное. В свойствах кнопки найдите поле OnClick, щелкните в него два раза. Студия создаст Вам заготовку функции, в нее и пропишите указанную строку кода.

Re: Щелчок кнопки/Счётчик ворон

Пару вопросов:
1 - не получается сделать "общую запись" Про котов и ворон - только разделением через разные TextView, иначе одновременно при нажатии Считаем ворон (или Считаем котястых) плюсует оба счетчика
2 - Хоть и нажимал "Infer Constaints" почему то при нажатии любой из Считаем - Сами кнопки "плавают"
Или это в следующих уроках??

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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="com.example.pekse.schvoron.MainActivity"
    tools:layout_editor_absoluteY="81dp"
    tools:layout_editor_absoluteX="0dp">

    <Button
        android:id="@+id/buttonCrowCounter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:text="Считаем ворон"
        android:layout_marginStart="14dp"
        tools:layout_constraintTop_creator="1"
        tools:layout_constraintLeft_creator="1"
        app:layout_constraintLeft_toLeftOf="@+id/buttonCatCounter"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginLeft="14dp" />

    <Button
        android:id="@+id/buttonCatCounter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:text="Считаем котястых"
        tools:layout_constraintTop_creator="1"
        tools:layout_constraintRight_creator="1"
        app:layout_constraintRight_toRightOf="@+id/textView2"
        android:layout_marginTop="8dp"
        app:layout_constraintTop_toBottomOf="@+id/buttonCrowCounter"
        tools:layout_constraintLeft_creator="1"
        app:layout_constraintLeft_toRightOf="@+id/textView2" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:layout_constraintTop_creator="1"
        tools:layout_constraintRight_creator="1"
        app:layout_constraintRight_toRightOf="@+id/textView3"
        android:layout_marginTop="16dp"
        app:layout_constraintTop_toBottomOf="@+id/buttonCatCounter"
        tools:layout_constraintLeft_creator="1"
        app:layout_constraintLeft_toRightOf="@+id/textView3" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:layout_constraintTop_creator="1"
        tools:layout_constraintRight_creator="1"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginTop="16dp"
        app:layout_constraintTop_toBottomOf="@+id/textView2"
        tools:layout_constraintLeft_creator="1"
        app:layout_constraintLeft_toLeftOf="parent" />

    <Button
        android:id="@+id/buttonHello"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:text="Поздороваться"
        tools:layout_constraintTop_creator="1"
        tools:layout_constraintRight_creator="1"
        tools:layout_constraintBottom_creator="1"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        tools:layout_constraintLeft_creator="1"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:layout_constraintTop_creator="1"
        tools:layout_constraintRight_creator="1"
        tools:layout_constraintBottom_creator="1"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginTop="107dp"
        app:layout_constraintTop_toBottomOf="@+id/buttonHello"
        tools:layout_constraintLeft_creator="1"
        android:layout_marginBottom="107dp"
        app:layout_constraintLeft_toLeftOf="parent" />

</android.support.constraint.ConstraintLayout>


package com.example.pekse.schvoron;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private Button mCrowCounterButton;
    private Button mCatCounterButton;
    private int mCount = 0;
    private int mCountCat = 0;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mCatCounterButton = (Button) findViewById(R.id.buttonCatCounter);
        mCatCounterButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                TextView mInfoTextView = (TextView) findViewById(R.id.textView3);
                mInfoTextView.setText("И " + ++mCountCat + " котяр");
            }
        });
        mCrowCounterButton = (Button) findViewById(R.id.buttonCrowCounter);
        mCrowCounterButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                TextView mInfoTextView = (TextView) findViewById(R.id.textView2);
                mInfoTextView.setText("Я насчитал " + ++mCount + " ворон.");

            }
        });
    }

    public void onClick(View view) {
        TextView helloTextView = (TextView) findViewById(R.id.textView);
        helloTextView.setText("Привет катямба :-)");
    }
}

Re: Щелчок кнопки/Счётчик ворон

kirill_nn,
1. Оба счетчика у Вас увеличиваются, очевидно, потому что инкремент выполняете при присвоении текста в textView. Если я правильно Вас понял, при нажатии кнопки Вам нужно сначала увеличить счетчик, а потом присвоить текст со значениями счетчиков в textView. Сделать это можно как в приведенном примере. Обратите внимание, что инкременты ++mCountCat и ++mCount выполняется в обработчиках нажатий кнопок независимо друг от друга, а присвоение текста вынесено в отдельную функцию showCounters(), и инкремент в ней не выполняется.

2. По второму вопросу непонятно - что именно у Вас плавает?

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mCatCounterButton = (Button) findViewById(R.id.buttonCatCounter);
        mCatCounterButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ++mCountCat;
                showCounters();
            }
        });
        mCrowCounterButton = (Button) findViewById(R.id.buttonCrowCounter);
        mCrowCounterButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ++mCount;
                showCounters();
            }
        });
    }
    public void showCounters() {
        TextView mInfoTextView = (TextView) findViewById(R.id.textView3);
        mInfoTextView .setText("Я насчитал " + mCount + " ворон." + "И " + mCountCat + " котяр");
    }
}