Прослушиватель onClick панели действий для кнопки Home



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



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



Я старался с:



@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.



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

574   8  

8 ответов:

Я использую 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;
}

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

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

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

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

    return super.onOptionsItemSelected(item);
}

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

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;
}

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

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

вам нужно явно включить действие home, если оно выполняется на ICS. От документы:

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

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

этот код будет полезным ссылка для помощи код

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

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

вы должны удалить переопределение 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;

    }

Comments

    Ничего не найдено.