Action Bar 的 Home 按钮的 onClick 监听器

问题描述 投票:0回答:9

如何为操作栏的主页按钮实现自定义

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

基本上,就像此链接中一样完成,但它仍然没有进入侦听器。

android android-intent actionbarsherlock onitemclicklistener
9个回答
124
投票

如果其他人需要解决方案

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

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

    return super.onOptionsItemSelected(item);
}

111
投票

我使用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;
}

24
投票

如果我们使用系统给定的操作栏,以下代码可以正常工作

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

7
投票

已修复:无需使用

setOnMenuItemClickListener
。 只需按下按钮,它就会通过意图创建并启动活动。

非常感谢大家的帮助!


7
投票

回答了所发生事情的一半。如果

onOptionsItemSelected
不控制
homeAsUp
按钮,当父 Activity 在 manifest.xml 中设置时,系统会转到父 Activity。在活动标签中这样使用:

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

3
投票

如果在 ICS 上运行,您需要显式启用 home 操作。来自文档

注意:如果您使用该图标导航至家庭活动,请注意 从 Android 4.0(API 级别 14)开始,您必须 通过调用显式启用图标作为操作项 setHomeButtonEnabled(true)(之前的版本中,图标已启用 默认情况下作为操作项)。


2
投票

自定义操作栏 onClickListener 的最佳方法是 onSupportNavigateUp()

此代码将会很有帮助帮助代码的链接


0
投票

2023年答案: 添加

android:parentActivityName=".NameOfParentActivity" 

到显示设置的 Activity(在 AndroidManifest.xml 中)。


-4
投票

您应该删除 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;

    }
© www.soinside.com 2019 - 2024. All rights reserved.