#android #back-button
#Android #кнопка возврата
Вопрос:
Несколько родительских действий для одного дочернего действия Кнопка возврата панели инструментов
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
Я должен переопределить эту функцию для функциональности кнопки «Назад», перезвонить к тому же родительскому действию, из которого вызывается дочерний элемент, но я не понимаю этот код строки:
id == android.R.id.home
Что такое R.id.home
? home
представлять для? должен ли я использовать одно и то же R.id.home
везде, где мне когда-либо приходилось использовать эту функцию кнопки «Назад» в моем приложении?
Ответ №1:
Вероятно, вы привыкли использовать R.id.whatever
для ссылки на идентификаторы, которые вы присвоили представлениям в своем приложении. Предоставление TextView
идентификатора label
, а затем вы можете найти его, выполнив поиск представления с R.id.label
его идентификатором и тому подобное.
Этот R
файл создается для вашего приложения на основе ресурсов, которые вы добавили или объявили. Но android.R.id.home
это идентификатор в файле Android R
— вы можете думать об этом как об отдельном наборе системных ресурсов. Это не будет конфликтовать ни с чем, чему вы присвоили идентификатор «home», потому что это было бы R.id.home
вместо.
Когда вы вызываете setHomeButtonEnabled
свою панель инструментов, Android добавляет свой собственный значок и присваивает ему внутренний идентификатор android.R.id.home
. Это всегда идентификатор для этой кнопки home, и вы можете проверить, была ли она нажата, проверив этот идентификатор при выборе пункта меню.
Комментарии:
1. подробное объяснение! это решило мою путаницу. спасибо @cactustictacs
Ответ №2:
R
это способ получить информацию из пакета ресурсов Android. id
сообщает ему, что вы хотите id
получить от него (вы также можете запросить у него другие вещи, например string
, s).
home
это фактический идентификатор, который вы запрашиваете. Вероятно, это кнопка, судя по вашему вопросу. Идентификаторы устанавливаются в редакторе представлений.
Если у вас есть поиск по вашему приложению, вы, вероятно, найдете кнопку с идентификатором home
.
Ответ №3:
Очень короткий ответ: способ доступа к ресурсам.
Ресурсами могут быть TextView
, Button
а также некоторые Strings
Drawable
изображения.
R.id.home
представляет какой-то конкретный ресурс, который есть MentuItem
, поэтому таким образом код определяет, MenuItem
выбран ли он или нет — в so может быть несколько MenuItem
Menu
, код определяет, выбрано ли значение MenuItem
with id
= home
или нет.
У вас должно быть что-то вроде этого в вашем Menu
HTML-файле:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@ id/home"
android:title="BlaBlaBla"
/>
...
Важное примечание: все ресурсы должны иметь разные идентификаторы (id), чтобы избежать неоднозначного доступа.
Здесь вы можете найти подробную информацию о R
с объясненными вариантами использования. Здесь