我有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
。
答案 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;
它可能会导致不必要的结果。