Java 隐藏/显示菜单不工作?

Java 隐藏/显示菜单不工作?,java,android,android-layout,Java,Android,Android Layout,我有三个标签 1.Invitation tab 2.Event tab 3.Groupchat tab and 我的布局中有3个菜单,即 1.Dropdown menu 2.create occasion menu 3.settings menu 目前,我的所有选项卡都显示所有三个菜单,但我需要在特定选项卡上显示特定菜单,例如,当它是onclick时

我有三个标签

           1.Invitation tab
           2.Event tab
           3.Groupchat tab  and
我的布局中有3个菜单,即

           1.Dropdown menu
           2.create occasion menu
           3.settings menu 
目前,我的所有选项卡都显示所有三个菜单,但我需要在特定选项卡上显示特定菜单,例如,当它是onclick时

           1.when ontap "Invitation tab" just show "settings menu" only.
           2.when ontap "Event tab" only shows"create occasion and settings menus"
           3.similarly when ontap "Groupchat tab" only shows"Dropdown and settings menus".
我尝试下面的代码,但它不是我期望的工作。请帮助我如何解决这个问题

    public class UserDashBoardActivity extends ActionBarActivity {

    /** Called when the activity is first created. */
    private static final String TAB_1_TAG = "Invitation";
    private static final String TAB_2_TAG = "Event";
    private static final String TAB_3_TAG = "GroupChat";
    private FragmentTabHost tabHost;
    private Context context;
    private SharedPreferences sharedpreferences;
    private Gson gson = new Gson();
    private Menu menu;

    @Override
    protected void onStart() {
        super.onStart();
        AppActivityStatus.setActivityStarted();
        AppActivityStatus.setActivityContext(context);
    }

    @Override
    protected void onPause() {
        super.onPause();
        AppActivityStatus.setActivityStoped();

    }

    @Override
    protected void onResume() {
        super.onPause();
        AppActivityStatus.setActivityStarted();
    }

    @Override
    protected void onStop() {
        super.onStop();
        AppActivityStatus.setActivityStoped();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        this.menu=menu;
        getMenuInflater().inflate(R.menu.menu_user_dash_board, menu);
        return true;

    }
    private void updateInvitationMenu() {
        MenuItem dropdownMenu = menu.findItem(R.id.dropdown);
        MenuItem occasionMenu=menu.findItem(R.id.create_occasion);
        occasionMenu.setVisible(false);
        dropdownMenu.setVisible(false);

    }
    private void updateEventMenu() {
        MenuItem dropdownMenu = menu.findItem(R.id.dropdown);
        dropdownMenu.setVisible(false);

    }

    private void updateGroupChatMenu() {
        MenuItem eventMenu=menu.findItem(R.id.create_occasion);
        eventMenu.setVisible(false);

    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.user_dash_board);
        context = getApplicationContext();
        sharedpreferences = context.getSharedPreferences(Constants.SHARED_PREFERENCE_NAME,
                Context.MODE_PRIVATE);
        // Get TabHost Refference
        tabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
        tabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);

        tabHost.addTab(tabHost.newTabSpec(TAB_1_TAG).setIndicator("Invitation"), InvitationFragment.class, null);
        tabHost.addTab(tabHost.newTabSpec(TAB_2_TAG).setIndicator("Event"), OccasionFragment.class, null);
        tabHost.addTab(tabHost.newTabSpec(TAB_3_TAG).setIndicator("GroupChat"), GroupChatFragment.class, null);

        //invitation tab highlighted by default
        tabHost.getTabWidget().setCurrentTab(0);
        tabHost.getTabWidget().getChildAt(0).setBackgroundColor(getResources().getColor(R.color.Orange));
        tabHost.getTabWidget().getChildAt(1).setBackgroundColor(getResources().getColor(R.color.sandal));
        tabHost.getTabWidget().getChildAt(2).setBackgroundColor(getResources().getColor(R.color.sandal));    

        //onTabChangedListener added for move one tab to others


        tabHost.setOnTabChangedListener(new OnTabChangeListener() {

            @Override
            public void onTabChanged(String arg0) {
                if (tabHost.getCurrentTab() == 0) {
                    updateInvitationMenu();
                } else if (tabHost.getCurrentTab() == 1) {
                    updateEventMenu();
                } else if (tabHost.getCurrentTab() == 2) {
                    updateGroupChatMenu();
                }
                setTabColor(tabHost);
            }
        });


    }

    //setTabColor method added for highlighting the tabs
    public void setTabColor(FragmentTabHost tabHost) {

        for(int i=0;i<tabHost.getTabWidget().getChildCount();i++)
        tabHost.getTabWidget().getChildAt(i).setBackgroundColor(getResources().getColor(R.color.scandal));//unselected

        if(tabHost.getCurrentTab()==0)
        tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()).setBackgroundColor(getResources().getColor(R.color.Orange));//1st tab selected
        else if(tabHost.getCurrentTab()==1)
        tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()).setBackgroundColor(getResources().getColor(R.color.Orange)); //2nd tab selected
        else if(tabHost.getCurrentTab()==2)
        tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()).setBackgroundColor(getResources().getColor(R.color.Orange)); //3rd tab selected
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();
        // noinspection SimplifiableIfStatement
        if (id == R.id.account_settings) {
            Intent userSettingIntent = new Intent(getApplicationContext(),ActivityUserSettings.class);
            userSettingIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(userSettingIntent);
            return true;
        }

        if (id == R.id.profile) {
            Intent profileIntent = new Intent(getApplicationContext(),ImageUploadActivity.class);
            profileIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(profileIntent);
            return true;
        }

        if(id == R.id.create_occasion){

                Intent occasionAct = new Intent(getApplicationContext(), OccasionActivity.class);
                // Clears History of Activity
                occasionAct.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(occasionAct);

        }
        return super.onOptionsItemSelected(item);
    }

}
公共类UserDashBoardActivity扩展了ActionBarActivity{
/**在首次创建活动时调用*/
私有静态最终字符串选项卡_1_TAG=“邀请”;
私有静态最终字符串选项卡_2_TAG=“事件”;
私有静态最终字符串选项卡_3_TAG=“GroupChat”;
私有碎片tabHost tabHost;
私人语境;
私人共享引用共享引用;
private Gson Gson=new Gson();
私人菜单;
@凌驾
受保护的void onStart(){
super.onStart();
AppActivityStatus.setActivityStarted();
AppActivityStatus.setActivityContext(上下文);
}
@凌驾
受保护的void onPause(){
super.onPause();
AppActivityStatus.SetActivityStopped();
}
@凌驾
受保护的void onResume(){
super.onPause();
AppActivityStatus.setActivityStarted();
}
@凌驾
受保护的void onStop(){
super.onStop();
AppActivityStatus.SetActivityStopped();
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
super.onCreateOptions菜单(菜单);
这个.菜单=菜单;
getMenuInflater().充气(右菜单菜单用户仪表板菜单);
返回true;
}
私有void updateInvitationMenu(){
MenuItem dropdownMenu=menu.findItem(R.id.dropdown);
MenuItem occasionMenu=menu.findItem(R.id.create\u时机);
occasionMenu.setVisible(false);
下拉菜单。设置可见(假);
}
私有void updateEventMenu(){
MenuItem dropdownMenu=menu.findItem(R.id.dropdown);
下拉菜单。设置可见(假);
}
私有void updateGroupChatMenu(){
MenuItem eventMenu=menu.findItem(R.id.create\u时机);
eventMenu.setVisible(false);
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.user\u仪表板);
context=getApplicationContext();
SharedReferences=context.getSharedReferences(Constants.SHARED\u PREFERENCE\u NAME,
上下文。模式(私人);
//获取TabHost引用
tabHost=(FragmentTabHost)findviewbyd(android.R.id.tabHost);
setup(这个,getSupportFragmentManager(),android.R.id.tabcontent);
tabHost.addTab(tabHost.newTabSpec(TAB_1_标记).setIndicator(“邀请”),InvitationFragment.class,null);
tabHost.addTab(tabHost.newTabSpec(TAB_2_标记).setIndicator(“事件”),OccasionFragment.class,null);
tabHost.addTab(tabHost.newTabSpec(TAB_3_标记).setIndicator(“GroupChat”),GroupChatFragment.class,null);
//“邀请”选项卡默认高亮显示
tabHost.getTabWidget().setCurrentTab(0);
tabHost.getTabWidget().getChildAt(0).setBackgroundColor(getResources().getColor(R.color.Orange));
tabHost.getTabWidget().getChildAt(1.setBackgroundColor(getResources().getColor(R.color.sanda));
tabHost.getTabWidget().getChildAt(2.setBackgroundColor(getResources().getColor(R.color.sanda));
//为将一个选项卡移动到其他选项卡而添加的onTabChangedListener
tabHost.setOnTabChangedListener(新的ontabchangedListener(){
@凌驾
已更改的公共void onTabChanged(字符串arg0){
if(tabHost.getCurrentTab()==0){
updateInvitationMenu();
}else if(tabHost.getCurrentTab()==1){
updateEventMenu();
}else if(tabHost.getCurrentTab()==2){
updateGroupChatMenu();
}
setTabColor(tabHost);
}
});
}
//添加了用于突出显示选项卡的setTabColor方法
public void setTabColor(FragmentTabHost tabHost){
对于(inti=0;i你可以这样做

    public class MainActivity extends Activity {

 ToggleButton btn1, btn2, btn3;
 Menu myMenu;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  btn1 = (ToggleButton)findViewById(R.id.option1);
  btn2 = (ToggleButton)findViewById(R.id.option2);
  btn3 = (ToggleButton)findViewById(R.id.option3);

  btn1.setOnCheckedChangeListener(btnOnCheckedChangeListener);
  btn2.setOnCheckedChangeListener(btnOnCheckedChangeListener);
  btn3.setOnCheckedChangeListener(btnOnCheckedChangeListener);
 }

 OnCheckedChangeListener btnOnCheckedChangeListener =
  new OnCheckedChangeListener(){

   @Override
   public void onCheckedChanged(CompoundButton buttonView, 
     boolean isChecked) {
    if(myMenu != null){
     if(buttonView==btn1){

      myMenu.findItem(R.id.menuopt1)
       .setVisible(isChecked);
      myMenu.findItem(R.id.menuopt1)
       .setEnabled(isChecked);
     }else if(buttonView==btn2){
      myMenu.findItem(R.id.menuopt2)
       .setVisible(isChecked);
      myMenu.findItem(R.id.menuopt2)
       .setEnabled(isChecked);
     }else if(buttonView==btn3){
      myMenu.findItem(R.id.menuopt3)
       .setVisible(isChecked);
      myMenu.findItem(R.id.menuopt3)
       .setEnabled(isChecked);
     }
    }

   }};

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

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  switch(item.getItemId()){
  case R.id.menuopt1:
   Toast.makeText(MainActivity.this, 
    "menuopt1", 
    Toast.LENGTH_SHORT).show();
   break;
  case R.id.menuopt2:
   Toast.makeText(MainActivity.this, 
    "menuopt2", 
    Toast.LENGTH_SHORT).show();
   break;
  case R.id.menuopt3:
   Toast.makeText(MainActivity.this, 
    "menuopt3", 
    Toast.LENGTH_SHORT).show();
   break;
  }
  return super.onOptionsItemSelected(item);
 }

}

现在我添加了我的仪表板布局代码,因为我正在使用tabwidgets组合所有选项卡。因此,我没有每个选项卡的单独id。现在我需要将每个选项卡更改为按钮。你收到我的消息了吗。我需要你的帮助。你必须在添加碎片的活动中执行此操作。你可以在我使用tabw时查看我的仪表板布局代码吗我要组合所有选项卡…在您的代码中,您正在为每个选项卡使用切换按钮…现在我要在仪表板布局上更改什么。。。
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.app.FragmentTabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >


        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1" />

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="-4dp"
            android:layout_weight="0" />

    </LinearLayout>

</android.support.v4.app.FragmentTabHost>
    public class MainActivity extends Activity {

 ToggleButton btn1, btn2, btn3;
 Menu myMenu;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  btn1 = (ToggleButton)findViewById(R.id.option1);
  btn2 = (ToggleButton)findViewById(R.id.option2);
  btn3 = (ToggleButton)findViewById(R.id.option3);

  btn1.setOnCheckedChangeListener(btnOnCheckedChangeListener);
  btn2.setOnCheckedChangeListener(btnOnCheckedChangeListener);
  btn3.setOnCheckedChangeListener(btnOnCheckedChangeListener);
 }

 OnCheckedChangeListener btnOnCheckedChangeListener =
  new OnCheckedChangeListener(){

   @Override
   public void onCheckedChanged(CompoundButton buttonView, 
     boolean isChecked) {
    if(myMenu != null){
     if(buttonView==btn1){

      myMenu.findItem(R.id.menuopt1)
       .setVisible(isChecked);
      myMenu.findItem(R.id.menuopt1)
       .setEnabled(isChecked);
     }else if(buttonView==btn2){
      myMenu.findItem(R.id.menuopt2)
       .setVisible(isChecked);
      myMenu.findItem(R.id.menuopt2)
       .setEnabled(isChecked);
     }else if(buttonView==btn3){
      myMenu.findItem(R.id.menuopt3)
       .setVisible(isChecked);
      myMenu.findItem(R.id.menuopt3)
       .setEnabled(isChecked);
     }
    }

   }};

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

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  switch(item.getItemId()){
  case R.id.menuopt1:
   Toast.makeText(MainActivity.this, 
    "menuopt1", 
    Toast.LENGTH_SHORT).show();
   break;
  case R.id.menuopt2:
   Toast.makeText(MainActivity.this, 
    "menuopt2", 
    Toast.LENGTH_SHORT).show();
   break;
  case R.id.menuopt3:
   Toast.makeText(MainActivity.this, 
    "menuopt3", 
    Toast.LENGTH_SHORT).show();
   break;
  }
  return super.onOptionsItemSelected(item);
 }

}