Android ActionBar не отображает значок приложения после setDisplayHomeAsUpEnabled (true)

Я хочу включить функцию навигации вверх в ActionBar и следую документу об этом по адресу: http://developer.android.com/guide/topics/ui/actionbar.html

Но когда я проверяю свое приложение (на Android 4.0), значок приложения не отображается, вместо этого отображается только левый курсор.

Я проверил файл манифеста Android, файл Java и файл макета, но до сих пор не знаю, как заставить его работать....

Вот AndroidManifest.xml:

...
<activity
        android:name="com.test.HelpActivity"
        android:label="@string/help"
        android:parentActivityName="com.test.HomeActivity"
        android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
        android:screenOrientation="portrait" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.test.HomeActivity" />
</activity>
...

А вот код Java:

...
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;

public class HelpActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_help);

        ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
}

}

Спасибо за помощь!

=====ОБНОВЛЕНИЕ=====

Я провел еще несколько тестов, и вот что у меня получилось:

на эмуляторе Android (2.3) он работает отлично.

на эмуляторе Android (4.1.2) он работает отлично.

на эмуляторе Android (4.0) все выглядит нормально, но когда я нажимаю кнопку «Домой/вверх», ничего не происходит, и отображается logcat: bad parentActivityName «HomeActivity» в манифесте

на моем телефоне (4.0.3) отображается только левый знак вставки, но навигация работает нормально.

на эмуляторе Android (4.3) он работает нормально, но фокусируемая область становится значком приложения + названием приложения. (То есть, когда я нажимаю в любом месте этой длинной области, она выделяется и запускается событие навигации вверх)

Теперь я полностью потерян ... Думаю, это может быть какая-то ошибка в некоторых версиях Android.


person Qianqian    schedule 14.04.2014    source источник
comment
Привет. Вы нашли решение ? Я мог бы быть в том же случае. Перепробовал все, но значок не отображается. У меня нет идей...   -  person DEIONaLiMs    schedule 02.01.2015
comment
@DEIONaLiMs, нет, у меня нет решения, и это похоже на ошибку на панели действий appcompat. В конце концов я просто отказался от этого, и, возможно, вы можете попробовать использовать Sherlock ActionBar, если вам нужно избавиться от этой ошибки.   -  person Qianqian    schedule 07.01.2015


Ответы (4)


добавьте эту строку ниже actionBar.setDisplayHomeAsUpEnabled(true);
это работает для меня

 actionBar.setDisplayShowHomeEnabled(true);
 actionBar.setIcon(R.drawable.ic_launcher);
person Sumit    schedule 16.12.2014
comment
Спасибо. Но поверьте мне, я пробовал, и это не сработало. Хорошо, что теперь я использую панель инструментов и мне больше не нужен значок с последним appcompat. - person Qianqian; 17.12.2014

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

У меня есть два приложения, полностью похожие на эти тренинги, в одном из них я использую более старую версию appcompat v7 и minSdkVersion="11", и я никогда не добавлял к нему getSupportActionBar().setDisplayHomeAsUpEnabled(true);
, но у приложения есть значок приложения и нет проблем. но в другом приложении я несколько дней назад обновлял свою библиотеку поддержки до версии 21, и, конечно, minSdkVersion этого приложения — «8», но в этом приложении нет значка панели действий для действия «Вверх», и если вы добавите к нему верхний код, вы ничего не сделаете. Я ищу многие сайты, и я понимаю, что в материальном дизайне Google удалил значок приложения для действия вверх из-за увеличения места на панели действий и т. д. Вы можете увидеть эту строку
«При использовании тем материала (по умолчанию в API 21 или новее) кнопка навигации (ранее «Домой») занимает место, ранее занимаемое значком приложения. Приложения, желающие выразить более сильный брендинг, должны активно использовать свои фирменные цвета на панели действий и другом хроме приложения или использовать вместо своего стандартный текст заголовка."
на этой странице http://developer.android.com/reference/android/support/v7/app/ActionBar.html
Я думаю. Благодарю.

person hitman snipe    schedule 14.02.2015

После введите здесь описание ссылки

Я добавил в setUp NavigationDrawerFragment

        Toolbar toolbar = (Toolbar) ((Activity)mCallbacks).findViewById(R.id.action_bar);
    if(toolbar!=null){
        toolbar.setLogo(R.drawable.ic_launcher);
    }   

тоже вроде не надо

    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setHomeButtonEnabled(true);

Я использую последнюю библиотеку поддержки 21.0.3.

чт

person Čikić Nenad    schedule 20.02.2015

Это странно, ну, вы можете использовать это

getActionBar().setDisplayUseLogoEnabled(useLogo)

где useLogo истинно или ложно, вы даже можете использовать другой рисунок в качестве значка панели действий с этим

getActionBar().setLogo(logo)

где логотип можно нарисовать

person Javier    schedule 14.04.2014
comment
Я действительно попробовал логотип, хотя я сделал это, добавив атрибут в файл AndroidManifest с соответствующим атрибутом. Но попробую и это. - person Qianqian; 15.04.2014