了解onOptionsItemSelected

时间:2014-02-25 11:18:33

标签: android android-fragments android-activity

我有2个带有操作栏的活动,其onCrate方法中包含此代码:

getActionBar().setDisplayHomeAsUpEnabled(true);

这是onOptionsItemSelected

@Override
public boolean onOptionsItemSelected(MenuItem item) 
{
   switch (item.getItemId()) 
   {
     case android.R.id.icon:
        finish();
        return true;
     default:
        return super.onOptionsItemSelected(item);
   }
}

第一个活动有一个父活动(在清单中配置),第二个活动刚刚从片段打开(没有在清单中配置父片段)。在第一个活动中,当我单击该图标时,活动item.getItemId()值与android.R.id.icon相同,然后落入switch语句(大小写为Android.R.id.icon)。在第二个活动中,这些值是不同的。为什么会这样?我想在两个活动中都是Android.R.id.icon

4 个答案:

答案 0 :(得分:1)

使用此类代码

public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(1, 1, 1, "Done").setIcon(R.drawable.img_done)
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
        menu.add(1, 2, 2, "Save").setIcon(R.drawable.img_save)
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
        return true;
    }




public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case 1:
        // Write your code for the first button
        break;
    case 2:
          // Write your code for the second button
        break;
    }
    return true;
}

答案 1 :(得分:1)

而不是使用android.R.id.icon使用android.R.id.home

试试这段代码:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

有关详情,请查看this link

答案 2 :(得分:0)

试试这个:

@Override
    public boolean onOptionsItemSelected(MenuItem item) 
    {
       switch (item.getItemId()) 
       {
         case R.id.icon:            //where 'icon' would be your item ID from menu.xml.
            finish();
            return true;
         default:
            return super.onOptionsItemSelected(item);
       }
    }

答案 3 :(得分:0)

您使用的android.R.id.icon可能有误。而不是你可能想要使用R.id.icon R.id.icon android.R.icon 文件之间存在差异。


还要确保您没有使用以下导入

import android.R;

它可能会导致不必要的结果。