在收藏夹列表中添加/删除电影时,我无法更改项目菜单工具栏的图标

问题描述

我想在菜单工具栏中更改action_favorite项的图标。当我单击项目toobar_fav它将更改图标“白心”时,我再次单击了项目toolbar_fav将更改图标“红心”。 此外,当我单击FloatingActionButton时,也会更改action_favorite项目的图标。现在我对此没有任何想法。我试过了但是没用 这是我的代码

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.movie_detail);
    movieviewmodel = new viewmodelProviders().of(this).get(Movieviewmodel.class);
    movieDatabase = Room.databaseBuilder(getApplicationContext(),MovieDatabase.class,"table_demo").build();
    toolbar = findViewById(R.id.toolbar_movie_detail);
    favItem = findViewById(R.id.toobar_fav);
    floatingActionButton = findViewById(R.id.fab_favorite);
    setSupportActionBar(toolbar);
}
private void initToolbar() {
    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setdisplayHomeAsUpEnabled(true);
    }
}

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_toolbar,menu);
    mMenu = menu;
    return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {

    if (mMenu != null && (!isExpanded || mMenu.size() != 2)) {
        //collapse
        mMenu.add("Favorite").setIcon(R.drawable.ic_white).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
    //            
    } else {
        //expaned
    }
    return super.onPrepareOptionsMenu(mMenu);
}
@Override
public boolean onoptionsItemSelected(@NonNull MenuItem item) {
    movie = new Detail(idMovie,favPoster,favRelease,favTitle,favVote,category,"","");
    if(item.getTitle() == "Favorite"){
        if (movieviewmodel.isFavorite(idMovie)) {
            floatingActionButton.setimageResource(R.drawable.ic_love_white);
            movieviewmodel.RemoveFavList(movie);
            Toast.makeText(MovieDetail.this,"Movie is deleted from Favorite List",Toast.LENGTH_SHORT).show();
 
        } else {
            Intent intent = new Intent(MovieDetail.this,AdapterFavorite.class);
            floatingActionButton.setimageResource(R.drawable.ic_favorite_red);
            movieviewmodel.addFavList(movie);
            Toast.makeText(MovieDetail.this,"Movie is added to Favorite List",Toast.LENGTH_SHORT).show();

        }
    }
    return super.onoptionsItemSelected(item);

}

 public void initFavorite() {
    movie = new Detail(idMovie,"");
    floatingActionButton.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (movieviewmodel.isFavorite(idMovie)) {
                floatingActionButton.setimageResource(R.drawable.ic_love_white);
                movieviewmodel.RemoveFavList(movie);
                Toast.makeText(MovieDetail.this,"Movie is deleted from  Favorite List",Toast.LENGTH_SHORT).show();

            } else {
                floatingActionButton.setimageResource(R.drawable.ic_favorite_red);
                movieviewmodel.addFavList(movie);
                Toast.makeText(MovieDetail.this,Toast.LENGTH_SHORT).show();

            }
        }
    });
}

请帮助我,非常感谢

解决方法

您无法在Java中将String==进行比较,因为它们是不同的对象。这仅在Kotlin中有效

交换此行

if(item.getTitle() == "Favorite"){

对此

if("Favorite".equals(item.getTitle())){