Re: Hello Kitty - Создаем первое приложение для Android

Для начала хотелось бы увидеть ваш код (и код разметки). Выглядит очень странно.

102 (edited by w3d 2018-05-19 16:04:47)

Re: Hello Kitty - Создаем первое приложение для Android

Добрый день!
Подскажите, если у меня проц AMD - можно запустить эмулятор?
Ругается что у проца нет функций и не работает sad

Вторая проблема - на железе первая версия программы запустилась, но когда начинаю модернизировать по статье, ругается
W/art: Before Android 4.1, method int android.support.v7.widget.DropDownListView.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView

Студия 3.1.2, настройки как в статье.

Текст (за исключением имени пакета) уже из статьи скопировал - все равно ошибка

UPD. посмотрел на смарт - оказывается запустилась версия с картинкой и работает. только все съехало в левый верхний угол - но решение я уже видел по форуму.

UPD2. перезагрузил ноут - ошибка пропала

Итак, остается вопрос как запустить эмулятор на проце AMD
По подсказкам траблшутинга попробовал поставить ARM - также не работает sad

Re: Hello Kitty - Создаем первое приложение для Android

Используйте реальное устройство и не мучайтесь.

Re: Hello Kitty - Создаем первое приложение для Android

Уважаемый автор!
Не могу понять причину, почему не отображается картинка в real time. В дизайне нормально.
<ImageButton
        android:id="@+id/imageButton"
        android:layout_width="130dp"
        android:layout_height="159dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="6dp"
        android:layout_marginBottom="8dp"
        android:contentDescription="TODO"
        android:onClick="onClick"
        app:layout_constraintBottom_toTopOf="@+id/textView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.25"
        tools:contentDescription="@string/app_name"
        tools:srcCompat="@drawable/pinkhellokitty" />

Re: Hello Kitty - Создаем первое приложение для Android

Вы не указали атрибут android:srcCompat. У вас только атрибут tools:srcCompat, который предназначен для режима дизайна.

Re: Hello Kitty - Создаем первое приложение для Android

Вы не указали атрибут android:srcCompat.
ну.. во-первых в уроке об этом ничего нет, во-вторых, после добавления в строки в
<ImageButton
        android:srcCompat="@drawable/pinkhellokitty" ...
компиляция не происходит куча ошибок sad
..Android resource linking failed
Output:  ../Android/AndroidStudioProjects/HelloWord/app/src/main/res/layout/activity_main.xml:10: error: attribute android:srcCompat not found.
error: failed linking file resources...
Если можете подсказать быстрое решение, буду признателен. Пока поковыряюсь сам. Спасибо.
ps: я добавил строку android:srcCompat.. в xml вручную

Re: Hello Kitty - Создаем первое приложение для Android

При добавлении строки android:src="@drawable/pinkhellokitty" приложение не запускается: ни на эмуляторе ни на устройстве (андроид 4.2)

Re: Hello Kitty - Создаем первое приложение для Android

В статье всё есть. Просто делайте по шагам и тогда всё получится. Атрибут app:srcCompat, а не android:srcCompat. Прописывать вручную пока не нужно, всё можно сделать через окно свойств. Просто вы не там прописываете. android:src раньше точно работал, но возможно сейчас этот способ запретили, я не проверял (завтра проверю, по идее должно работать).

109 (edited by MonoLife 2018-11-19 15:01:09)

Re: Hello Kitty - Создаем первое приложение для Android

alexander.klimoff wrote:

Выделяем элемент ImageButton на форме и в панели свойств откроем только важные свойства, выбираем свойство srcCompat...

Хм.. в важных свойствах srcCompat не нашел. Возможно в посследней версии АС его убрали.. В "подробных" - srcCompat есть. При вводе в это поле атрибутов картинки создается строка tools:srcCompat=...
В главных свойствах есть 2 строки с src (одна под другой). При заполнении их или одной из них аргументами с картинкой, приложение не запускается sad Ошибок в логе при этом не наблюдаю.
---
Это какой-то глюк IDE. Удалил заново создал кнопку. Появились поля srcCompat. Тем не менее, приложение не запускается

<ImageButton
        android:id="@+id/imageButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.292"
        app:srcCompat="@drawable/pinkhellokitty" />

---
Взял картинку app:srcCompat="@mipmap/ic_launcher" всё заработало. С Вашей картинкой не хочет. Вопрос: в панели файлов drawable/ отображается как pinkhellokitty.jpg (v24) Что такое v24?
---
Решено! Оказывается, при вставке изображения предлагается 2 вида: drawable и drawable24. Снова скопировал картинку в просто-drawable и все Ок!

Re: Hello Kitty - Создаем первое приложение для Android

По следам ваших сообщений. В важных свойствах scrCompat есть. v24 - картинка будет отображаться в устройствах с API 24 и выше. Вы видимо запускали телефон или эмулятор с ранней версией.

Re: Hello Kitty - Создаем первое приложение для Android

alexander.klimoff wrote:

...Вы видимо запускали телефон или эмулятор с ранней версией.

У меня аппарат zero f highscreen 4'' Android 4.2. Виртуальный avd предварительно я настроил также. В общем, продолжаем изучать! smile Спасибо.

Re: Hello Kitty - Создаем первое приложение для Android

Добрый вечер!
Александр, спасибо за урок, все получилось, кроме одной вещи. Выводится картинка, а вместе с ней текст "TextView", при нажатии на котенка текст меняется на "Hello kitty!". Подскажите, пожалуйста, как сделать так, чтобы выводилась только картинка, а уже при нажатии на нее появлялся текст?

Re: Hello Kitty - Создаем первое приложение для Android

Здесь всё в ваших руках. Пишите код для вывода картинки. И пишите код для вывода текста при нажатии на картинку. Думаю, вам нужно просто проходить уроки дальше и сами разберетесь, как реализовать свои задумки.

114 (edited by bibip 2020-11-15 21:12:22)

Re: Hello Kitty - Создаем первое приложение для Android

У меня Android Studio выдавал Unresolved reference: button
button - это id моей кнопки

В статье прочитал:

Давайте разбираться. В build.gradle есть строчка apply plugin: 'kotlin-android-extensions', позволяющая автоматически получать доступ к компоненту через его идентификатор в ресурсах.


Я нашел это место, у меня было вот так:

plugins {
    id 'com.android.application'
    id 'kotlin-android'
}

Т.е. без нужной строчки, я добавил ее:

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-android-extensions'
}

Потом сделал "Sync now" - и все заработало)

Re: Hello Kitty - Создаем первое приложение для Android

Насколько я понял, в новой версии студии 4.1 этот способ признали устаревшим. Поэтому вам надо не добавлять эту строчку, а писать код по другому. К сожалению, я не могу угнаться за всеми изменениями и вносить исправления в статьи.

Re: Hello Kitty - Создаем первое приложение для Android

package ru.alexanderklimov.hellokot

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import ru.alexanderklimov.hellokot.databinding.ActivityMainBinding


class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)

        binding.imageButton.setOnClickListener{
            if (binding.editText.text.isEmpty()) {
                binding.textView.setText("Hello Kitty")
            } else {
                binding.textView.setText("Привет, " + binding.editText.text)
            }
        }
    }
}

Re: Hello Kitty - Создаем первое приложение для Android

Ни у кого не вижу чтоб юзали apply {}, ведь так в коде гараздо меньше повторений

package com.alexeyyuditsky.helloworld

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.alexeyyuditsky.helloworld.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.apply {
            imageButton.setOnClickListener {
                if (editText.text.isEmpty()) {
                    textView.text = "Hello Kitty"
                } else {
                    textView.text = "Привет ${editText.text}"
                }
            }
        }
    }
}

Re: Hello Kitty - Создаем первое приложение для Android

К новому слову apply нужно привыкнуть. Поэтому не все его используют