Re: Hello Kitty - Создаем первое приложение для Android
Для начала хотелось бы увидеть ваш код (и код разметки). Выглядит очень странно.
Все вопросы проплачены кошками - всемирно известными производителями котят
You are not logged in. Please login or register.
Для регистрации на форуме следует написать мне письмо. В ответе я напишу правильный ответ для прохождения регистрации.
Форум Александра Климова → Android → Hello Kitty - Создаем первое приложение для Android
Для начала хотелось бы увидеть ваш код (и код разметки). Выглядит очень странно.
Добрый день!
Подскажите, если у меня проц AMD - можно запустить эмулятор?
Ругается что у проца нет функций и не работает
Вторая проблема - на железе первая версия программы запустилась, но когда начинаю модернизировать по статье, ругается
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 - также не работает
Используйте реальное устройство и не мучайтесь.
Уважаемый автор!
Не могу понять причину, почему не отображается картинка в 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" />
Вы не указали атрибут android:srcCompat. У вас только атрибут tools:srcCompat, который предназначен для режима дизайна.
Вы не указали атрибут android:srcCompat.
ну.. во-первых в уроке об этом ничего нет, во-вторых, после добавления в строки в
<ImageButton
android:srcCompat="@drawable/pinkhellokitty" ...
компиляция не происходит куча ошибок
..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 вручную
При добавлении строки android:src="@drawable/pinkhellokitty" приложение не запускается: ни на эмуляторе ни на устройстве (андроид 4.2)
В статье всё есть. Просто делайте по шагам и тогда всё получится. Атрибут app:srcCompat, а не android:srcCompat. Прописывать вручную пока не нужно, всё можно сделать через окно свойств. Просто вы не там прописываете. android:src раньше точно работал, но возможно сейчас этот способ запретили, я не проверял (завтра проверю, по идее должно работать).
Выделяем элемент ImageButton на форме и в панели свойств откроем только важные свойства, выбираем свойство srcCompat...
Хм.. в важных свойствах srcCompat не нашел. Возможно в посследней версии АС его убрали.. В "подробных" - srcCompat есть. При вводе в это поле атрибутов картинки создается строка tools:srcCompat=...
В главных свойствах есть 2 строки с src (одна под другой). При заполнении их или одной из них аргументами с картинкой, приложение не запускается Ошибок в логе при этом не наблюдаю.
---
Это какой-то глюк 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 и все Ок!
По следам ваших сообщений. В важных свойствах scrCompat есть. v24 - картинка будет отображаться в устройствах с API 24 и выше. Вы видимо запускали телефон или эмулятор с ранней версией.
...Вы видимо запускали телефон или эмулятор с ранней версией.
У меня аппарат zero f highscreen 4'' Android 4.2. Виртуальный avd предварительно я настроил также. В общем, продолжаем изучать! Спасибо.
Добрый вечер!
Александр, спасибо за урок, все получилось, кроме одной вещи. Выводится картинка, а вместе с ней текст "TextView", при нажатии на котенка текст меняется на "Hello kitty!". Подскажите, пожалуйста, как сделать так, чтобы выводилась только картинка, а уже при нажатии на нее появлялся текст?
Здесь всё в ваших руках. Пишите код для вывода картинки. И пишите код для вывода текста при нажатии на картинку. Думаю, вам нужно просто проходить уроки дальше и сами разберетесь, как реализовать свои задумки.
У меня 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" - и все заработало)
Насколько я понял, в новой версии студии 4.1 этот способ признали устаревшим. Поэтому вам надо не добавлять эту строчку, а писать код по другому. К сожалению, я не могу угнаться за всеми изменениями и вносить исправления в статьи.
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)
}
}
}
}
Ни у кого не вижу чтоб юзали 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}"
}
}
}
}
}
К новому слову apply нужно привыкнуть. Поэтому не все его используют
Форум Александра Климова → Android → Hello Kitty - Создаем первое приложение для Android
Powered by PunBB, supported by Informer Technologies, Inc.