Nano Hash - криптовалюты, майнинг, программирование

Android: значок приложения в качестве кнопки «Вверх» не работает

Я следую базовому руководству для начинающих на сайте разработчиков Android. Теперь я описываю, как сделать значок приложения кнопкой «Вверх» (см. последний текст): http://developer.android.com/training/basics/actionbar/adding-buttons.html#UpNav

Я поставил "getSupportActionBar().setDisplayHomeAsUpEnabled(true);" в моих действиях onCreate() Methods, но на моем устройстве у моего приложения нет значка приложения в качестве кнопки. вот моя деятельность

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

а также

public class DisplayMessageActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    // Get the message from the intent
    Intent intent = this.getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    // Create the text view
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);

    // Set the text view as the activity layout
    setContentView(textView);
}

А также мой Манифест

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.andreas.myapplication.MainActivity" />
    </activity>
</application>

И информация о Gradle

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
    applicationId "com.example.andreas.myapplication"
    minSdkVersion 8
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}

Я запутался, потому что я уже использовал правильный метод для minSdkVersion 8.

Кто-нибудь знает, почему приложение ma App не отображает значок как кнопку «Вверх»?

с уважением

02.01.2015

  • Я предполагаю, что MainActivity не должен показывать кнопку ВВЕРХ, так как это уже ВЕРХНИЙ УРОВЕНЬ. Но DisplayMessageActivity должен. 02.01.2015
  • Да не должно. Но это не вопрос о том, следует или не следует существование кнопки «вверх». Он должен отображать значок приложения, а значок приложения не отображается на уровне TOPLevel или в интерфейсе DisplayMessageActivity. 02.01.2015
  • Если это не так, вы можете удалить эту строку в MainActivity: getSupportActionBar().setDisplayHomeAsUpEnabled(true);. И та часть, где вы создаете TextView во время выполнения и устанавливаете его как ContentView... выглядит, по крайней мере, наивно, на мой взгляд. 02.01.2015
  • Конечно наивно. Это начальное руководство по сайту для разработчиков Android, как описано здесь: developer. android.com/training/basics/actionbar/ проблема в том, что он должен отображать мой значок с помощью getSupportActionBar().setDisplayHomeAsUpEnabled(true); но это не так, как описано в конце 02.01.2015
  • Что ж, я не нахожу в этой ссылке ссылки на установку TextView в качестве представления контента... Помимо этого, я бы использовал фрагменты (1 действие и столько фрагментов, сколько необходимо). Итак, я бы использовал стандартную стрелку вверх, которая управляется системой из коробки без каких-либо других трюков. 02.01.2015
  • это сделано здесь developer.android.com/training/basics/firstapp/ тем не менее, я пробую другой учебник для домашних вещей. Кажется, лучшее решение, но все равно спасибо 02.01.2015
  • Нет, ну, конечно выполнимо, но... довольно редко. 02.01.2015

Ответы:


1

Я столкнулся с той же проблемой - включение «отображать дом как вверх» привело к кнопке «Вверх» со стрелкой на ней. Мне удалось заменить стрелку значком приложения, выполнив следующие действия:

  • Создайте новый ImageAsset с изображениями значков приложений в /drawable.
  • В OnCreate() дочерней активности добавьте 2 строки:

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);                    
    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_home);
    
04.08.2015

2

Замените значение метаданных android:value="com.example.andreas.myapplication.MainActivity" на android:value=".MainActivity"

Чтобы поддерживать старые устройства с помощью библиотеки поддержки, также включите элемент, указывающий родительскую активность в качестве значения для android.support.PARENT_ACTIVITY, как показано ниже:

<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
     android:name="android.support.PARENT_ACTIVITY"
     android:value=".MainActivity" />

http://programmerguru.com/android-tutorial/how-to-add-up-button-on-action-bar/

24.09.2015

3

Я считаю, что вам нужно позвонить getSupportActionBar().setDisplayHomeAsUpEnabled(true); после вызова setContentView(textView); во втором действии.

ИЗМЕНИТЬ:

кроме того, основная активность не должна вызывать getSupportActionBar().setDisplayHomeAsUpEnabled(true);, так как она никуда не ведет. И вы должны добавить кнопку для переключения действий, иначе вы никогда не попадете в DisplayMessageActivity. попробуйте что-то вроде этого:

Intent showmessg = new Intent(getApplicationContext(), DisplayMessageActivity.class);
startActivity(showmessg);

Надеюсь, это сработает для вас.

источник: http://developer.android.com/training/basics/actionbar/adding-buttons.html#UpNav

02.01.2015
  • Спасибо за ваше предложение, но оно не помогает. Ничего не меняет. И это только детская деятельность. В основном действии кнопка «Вверх» в виде значка также не отображается. намерение, которое у меня есть в моем коде, но не в методе onCreate, который я показываю здесь. Проблема только в иконке, больше ничего, но спасибо. 02.01.2015
  • приложение запускается в действии с «фильтром намерений», поэтому вам нужен способ получить доступ к дочернему классу. прочитайте правку. 02.01.2015
  • я иду к своему ребенку через кнопку отправки. у меня есть намерение 02.01.2015
  • /** Вызывается, когда пользователь нажимает кнопку «Отправить» */ public void sendMessage(View view) { Intentintent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.edit_message); // EditText по идентификатору находит String message = editText.getText().toString(); намерение.putExtra (EXTRA_MESSAGE, сообщение); startActivity(намерение); // Startet eine Instanz einer Aktivität die im Intent Definiert ist, siehe new Aufruf } 02.01.2015
  • просто переместите getSupportActionBar().setDisplayHomeAsUpEnabled(true); после setContentView (textView); и дайте мне знать, что происходит. 02.01.2015
  • Ничего не произошло. Все как раньше 02.01.2015
  • чтобы было ясно: во втором действии вы не можете нажать значок, чтобы вернуться. это проблема. 02.01.2015
  • нет. проблема не в том что кнопка вверх не работает. проблема в том, что моя кнопка вверх не является значком, как здесь: developer.android. com/images/ui/actionbar-up.png это просто текст, но это должна быть иконка из моего приложения. Это то, что сказано в учебнике. Затем включите значок приложения в качестве кнопки «Вверх», вызвав setDisplayHomeAsUpEnabled(): 02.01.2015
  • У вас есть значок приложения? (по умолчанию не отображается в темах appcompact) 02.01.2015
  • ты уверен, что его не показывают? не могу в это поверить. Как бы то ни было, я скопировал из всех папок пункт ic_launcher-icons, назвал его appicon, поставил обратно, поменял в манифесте иконку с ic_launcher на appicon, но это ничего не изменило. по-прежнему нет значка на панели с getSupportActionBar().setDisplayHomeAsUpEnabled(true); здесь значок отображается на панели. developer.android.com/training/basics/actionbar/styling.html 02.01.2015
  • appcompact никогда не показывает значок для меня, просто нужно использовать другую тему 02.01.2015

  • 4

    Я думаю, что в Android 5 и API 21 мы не можем использовать значок приложения для действия вверх.
    если ваша библиотека поддержки appcompat v7 rev21, я думаю, вы не можете использовать значок приложения по крайней мере для действия вверх. но вы можете использовать его вместо верхней левой каретки или вы можете использовать значок приложения справа от этой каретки, хотя, если вы нажмете на нее, ничего не произойдет.

    У меня есть два приложения, полностью похожие на эти тренинги, в одном из них я использую более старую версию appcompat v7 и minSdkVersion="11", и я никогда не добавлял к нему getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    , но у приложения есть значок приложения и нет проблем. но в другом приложении я несколько дней назад обновлял свою библиотеку поддержки до версии 21, и, конечно, minSdkVersion этого приложения — «8», но в этом приложении нет значка панели действий для действия «Вверх», и если вы добавите к нему верхний код, вы ничего не сделаете. Я ищу многие сайты, и я понимаю, что в материальном дизайне Google удалил значок приложения для действия вверх из-за увеличения места на панели действий и т. Д. Вы можете увидеть эту строку в этой страницы.

    «При использовании тем материала (по умолчанию в API 21 или новее) кнопка навигации (ранее «Домой») занимает место, ранее занимаемое значком приложения. Приложения, желающие выразить более сильный брендинг, должны активно использовать свои фирменные цвета в действии. панель и другие хромированные приложения или используйте вместо их стандартного текста заголовка».

    14.02.2015
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..