Подтвердить что ты не робот

Панель действий onClick для кнопки "Домой"

Как я могу реализовать пользовательский onClickListener для кнопки "Главная" панели действий?

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

Я пробовал:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            item.setOnMenuItemClickListener(new OnMenuItemClickListener() {
                public boolean onMenuItemClick(MenuItem item) {
                    Intent i = new Intent();
                    i.setClass(BestemmingActivity.this, StartActivity.class);
                    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(i);
                    return true;
                }
            });
        default:
            return super.onOptionsItemSelected(item);
        }
    }

но он никогда не входит в onMenuItemClick.

В принципе, это делается так же, как в этой ссылке, но все же он не входит в прослушиватель.

4b9b3361

Ответ 1

Исправлено: не нужно использовать setOnMenuItemClickListener. Просто нажимая кнопку, она создает и запускает действие через намерение.

Спасибо всем за вашу помощь!

Ответ 2

Я использую actionBarSherlock, после того, как мы установим supportActionBar.setHomeButtonEnabled(true);
мы можем переопределить метод onMenuItemSelected:

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {

    int itemId = item.getItemId();
    switch (itemId) {
    case android.R.id.home:
        toggle();

        // Toast.makeText(this, "home pressed", Toast.LENGTH_LONG).show();
        break;

    }

    return true;
}

Я надеюсь, что эта работа для вас ~~~ удачи

Ответ 3

если кому-то еще нужно решение

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == android.R.id.home) {
        onBackPressed();  return true;
    }

    return super.onOptionsItemSelected(item);
}

Ответ 4

если мы используем системную панель действий, следующий код работает нормально

getActionBar().setHomeButtonEnabled(true);

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {

    int itemId = item.getItemId();
    switch (itemId) {
    case android.R.id.home:
      //do your action here.
        break;

    }

    return true;
}

Ответ 5

Вам нужно явно включить домашнее действие, если оно запущено на ICS. Из документы:

Примечание. Если вы используете значок для перехода к домашней активности, остерегайтесь того, что начиная с Android 4.0 (уровень API 14), вы должны явно включить значок в качестве элемента действия, вызвав setHomeButtonEnabled (true) (в предыдущих версиях значок был включен как элемент действия по умолчанию).

Ответ 6

Лучший способ настроить панель действий onClickListener - onSupportNavigateUp()

Этот код будет полезен для получения кода

Ответ 7

отвечает в половине случаев происходящего. если onOptionsItemSelected не управляет кнопкой homeAsUp, когда родительская активность устанавливает в manifest.xml, система переходит к родительской активности. используйте это в теге активности:

<activity ... >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.activities.MainActivity" /> 
</activity>

Ответ 8

вы должны удалить свой Override onOptionsItemSelected и заменить его onCreateOptionsMenu на этот код

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_action_bar_finish_order_stop, menu);
        menu.getItem(0).setOnMenuItemClickListener(new FinishOrderStopListener(this, getApplication(), selectedChild));
        return true;

    }