Jestem noobem dla Androida i mam problemy z unieważnieniem widoku. Korzystam z samouczka this i nie mam problemów z jego implementacją. Jednak po zmianie tła widoku nadal odpowiada, tak jakby poprzednie tło było nadal ustawione. Innymi słowy, zmieniam maskę, ale moja klasa "touchview" nie widzi nowej maski. Nie miałem szczęścia przy użyciu invalidate, aby zaktualizować widok, a ja zweryfikowałem, że maska jest resetowana jako tło. Każda pomoc będzie bardzo ceniona.Dlaczego widok niestandardowy nie unieważnia?
mój kod
@Override
public boolean onMenuItemClick(com.actionbarsherlock.view.MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId())
{
case 1: // id from the xml file
if(isMale){
isMale=false;
item.setIcon(R.drawable.male_icon);
imageViewOriginal.setImageResource(R.drawable.woman_front);
imageViewFlip.setImageResource(R.drawable.woman_back);
if(isFrontView){
myMask.setBackgroundResource(R.drawable.woman_front_mask); //Mask changed here
}else{
myMask.setBackgroundResource(R.drawable.woman_back_mask); //Mask changed here
}
}else{
isMale=true;
item.setIcon(R.drawable.female_icon);
imageViewOriginal.setImageResource(R.drawable.man_front);
imageViewFlip.setImageResource(R.drawable.man_back);
if(isFrontView){
myMask.setBackgroundResource(R.drawable.man_front_mask); //Mask changed here
}else{
myMask.setBackgroundResource(R.drawable.man_back_mask); //Mask changed here
}
}
touchView.invalidate();
infoView.invalidate();
myMask.invalidate(); //Mask View Invalidated here
return true; // we handled the click, dont pass it up the chain
case 2: // id from the xml file
if(isFrontView){
isFrontView=false;
if(isMale){
myMask.setBackgroundResource(R.drawable.man_back_mask); //Mask changed here
}else{
myMask.setBackgroundResource(R.drawable.woman_back_mask); //Mask changed here
}
}else{
isFrontView=true;
if(isMale){
myMask.setBackgroundResource(R.drawable.man_front_mask); //Mask changed here
}else{
myMask.setBackgroundResource(R.drawable.woman_front_mask); //Mask changed here
}
}
FlipAnimator animator = new FlipAnimator(imageViewOriginal, imageViewFlip,
imageViewFlip.getWidth()/2, imageViewFlip.getHeight()/2);
if (imageViewOriginal.getVisibility() == View.GONE) {
animator.reverse();
}
flipLayout.startAnimation(animator);
touchView.invalidate();
infoView.invalidate();
myMask.invalidate(); //Mask View Invalidated here
return true;
}
return false;
}
Dlaczego nie używasz R.id.itemId w przypadku oświadczenia, To jest bardziej proste. Czy na pewno jesteś pewien, że twój kod jest wywoływany? a link jest zepsuty, proszę zaksięguj tutaj swój kod. – VinceStyling
Pasek akcji Sherlock pozwala mi tworzyć elementy menu z numerami wewnętrznymi. Powyższy link działa, a kod jest wywoływany. –