有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android ActionBar项目图标持续变化?

在我的ActionBar上有一个关于星星的图标(没有填充)。 当用户点击它时,图标会变成另一个图标(填充的星星)。 但问题是,如果用户再次点击,图标不会再改变一次

这就是我想要的

icon1->;单击->;icon2->;单击->;icon1->;单击->;icon2

我的项目xml:

<item
    安卓:id="@+id/bookmark"
    安卓:icon="@drawable/bookmark"
    安卓:showAsAction="ifRoom"
    安卓:title="Add to Favorites"/>

我的Java for actionBar:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    menu.clear();
    inflater.inflate(R.menu.activity_desc, menu);
}



@Override
  public boolean onOptionsItemSelected(MenuItem item) {

    if(item.getItemId() == R.id.bookmark){



        // i tried this: something like: if(item.getIcon() == (R.drawable.nobookmark){} it doesn't work 


        item.setIcon(R.drawable.nobookmark);

        return true;
    }

    return true;

  }

共 (1) 个答案

  1. # 1 楼答案

    item.xml中,使其可检查:

    <item
        android:id="@+id/bookmark"
        android:icon="@drawable/nobookmark"
        android:checkable="true"
        android:showAsAction="ifRoom"
        android:title="Add to Favorites"/>
    

    在java中,必须手动切换选中状态并选择图标:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
      if(item.getItemId() == R.id.bookmark){
        item.setChecked(!item.isChecked());
        item.setIcon(item.isChecked() ? R.drawable.bookmark : R.drawable.nobookmark);
        return true;
      }
      return false;
    }