Action Bar的Home按钮的onClick监听器

nol*_*man 81 android android-intent onitemclicklistener actionbarsherlock

如何onClickListener为Action Bar的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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

但它永远不会进入onMenuItemClick.

基本上,它就像在这个链接中一样,但它仍然没有进入监听器.

lyn*_*570 110

我用的是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;
}
Run Code Online (Sandbox Code Playgroud)

我希望这对你有用~~~祝你好运

  • 对我有用.无法覆盖onMenuItemSelected作为其最终版本. (4认同)

Saa*_*mud 107

如果有其他人需要解决方案

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

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

    return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)

  • 用`return true;`为我工作 (3认同)
  • 此方法不适用于带箭头图标的Home/Back按钮. (2认同)

raj*_*aju 21

如果我们使用系统给定的动作栏下面的代码工作正常

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;
}
Run Code Online (Sandbox Code Playgroud)


nol*_*man 7

修正:无需使用setOnMenuItemClickListener.只需按下按钮,它就会通过意图创建并启动活动.

非常感谢大家的帮助!


Dav*_*vid 5

回答了正在发生的事情的一半。如果在 manifest.xml 系统中设置父活动时onOptionsItemSelected没有控制homeAsUp按钮转到父活动。在活动标签中像这样使用:

<activity ... >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.activities.MainActivity" /> 
</activity>
Run Code Online (Sandbox Code Playgroud)