2012-08-22 113 views
0
flipper = (ViewFlipper) findViewById(R.id.vFslideshow); 

    flipper.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      flipper.showNext(); 

     } 
    }); 
} 




@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    if(flipper.isFlipping()){ 

     menu.removeItem(0); 

    }else{ 

     menu.removeItem(1); 

    } 

    return true; 
} 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    menu.add(0, 0, 0, "start slideshow"); 
    menu.add(0, 1, 1, "stop slideshow"); 
    menu.add(0, 2, 2, "close"); 

    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 
    case 0: 
     flipper.setFlipInterval(1000); 
     flipper.startFlipping(); 
     break; 
    case 1: 
     flipper.stopFlipping(); 
     break; 
    case 2: 

     this.finish(); 

     break; 
    } 

    return true; 
} 

正如你们所看到的,我试图检查某些条件下使用其onPrepareOptionMenu(菜单菜单)显示选项菜单问题onPrepareOptionMenu(菜单菜单)?

但输出我越来越有点有线,所以如果有人能帮助我理解为什么我会得到意想不到的输出。

输出:当第一次启动/触发此活动时,它显示两个选项(通过按菜单按钮)“开始幻灯片放映”和“关闭”,点击选项菜单中的“开始幻灯片放映”后,开始翻转,罚款。但现在,如果我按菜单按钮和选项菜单弹出,它只显示一个选项,“关闭”。想知道为什么它没有显示“停止幻灯片放映”。

THX ..

+0

把菜单项的GROUPID “停止幻灯片” 为0,这将导致由default.ie menu.add(0,1,1,“停止三个菜单选项幻灯片“); –

+0

@hemanth kumar对不起,是错字。它已经是0 ... – Mohit

+0

正如我所看到的,您可以删除onPrepare方法中的菜单项,但它无处添加。我不知道这个鳍状肢,但它是否重新加载整个活动?尝试玩setvisibility和禁用menuitem,这会隐藏它,但不能从菜单中删除,所以你可以很容易地从onPrepare恢复它。 – nistv4n

回答

0

所以答案是:贯彻落实onOptionsMenuClosed(菜单菜单),并调用setVisible =真为您在onprepareoptionmenu有隐藏的菜单项。

这里是溶胶代码:

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    if(flipper.isFlipping()){ 

     menu.getItem(0).setVisible(false); 

    }else{ 

     menu.getItem(1).setVisible(false); 

    } 

    return true; 
} 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    menu.add(0, 0, 0, "start slideshow"); 
    menu.add(0, 1, 1, "stop slideshow"); 
    menu.add(0, 2, 2, "close"); 

    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 
    case 0: 
     flipper.setFlipInterval(1000); 
     flipper.startFlipping(); 
     break; 
    case 1: 
     flipper.stopFlipping(); 
     break; 
    case 2: 

     this.finish(); 

     break; 
    } 

    return true; 
} 





@Override 
public void onOptionsMenuClosed(Menu menu) { 
    super.onOptionsMenuClosed(menu); 


      menu.getItem(0).setVisible(true); 
      menu.getItem(1).setVisible(true); 



}