问题描述
我想在菜单工具栏中更改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())){