0

런타임에 탭을 추가 할 tabActivity가 있습니다. 내가 옵션 메뉴를 정의, 열기 옵션 TabActivity의 탭 터치 메뉴

_tabSpec = TabHost.newTabSpec("More"); 
_tabSpec.setIndicator("", Resources.GetDrawable(Resources.Drawable.myIcon).SetContent(intent); 
TabHost.AddTab(_tabSpec); 

는 이제 일이 내가 사용자가 '기타'탭을 클릭 할 때 팝업하려는 : 그래서이 그 작업을 수행하는 일반적인 코드라고 생각합니다. 어떻게해야할지 모르겠다. 나는 해당 탭에 콘텐츠를 설정하지 않고 단순히 OpenOptionsMenu()을 사용하여 팝업했으나 작동하지 않는 것 같습니다.

실마리를 어떻게 달성 할 수 있습니까? P .:이 코드는 Xamarin으로 작성된 C# 코드입니다. 네이티브 java-android 코드처럼 보일 수는 없지만 거의 동일합니다.

답변

0
private String lastTab = null; 

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

     final TabHost tabHost = getTabHost(); 

     TabHost.TabSpec tabSpec; 

     tabSpec = tabHost.newTabSpec("tab1"); 
     tabSpec.setIndicator("Tab 1"); 
     tabSpec.setContent(new Intent(this, OneActivity.class)); 
     tabHost.addTab(tabSpec); 

     tabSpec = tabHost.newTabSpec("tab2"); 
     tabSpec.setIndicator("Tab 2"); 
     tabSpec.setContent(new Intent(this, TwoActivity.class)); 
     tabHost.addTab(tabSpec); 

     tabSpec = tabHost.newTabSpec("more"); 
     tabSpec.setIndicator("More"); 
     tabSpec.setContent(new Intent(this, OneActivity.class)); 
     tabHost.addTab(tabSpec); 

     tabHost.setOnTabChangedListener(new OnTabChangeListener() { 

      @Override 
      public void onTabChanged(String tabId) { 
       if (tabId.equalsIgnoreCase("more")){ 
        openOptionsMenu(); 
        tabHost.setCurrentTabByTag(lastTab); 
       } 
       else lastTab = tabId; 

      } 
     }); 


    } 
+0

그래서 내가 탭을 추가하고 그것에 대한 의도를 설정하고 다음 onTabChangedListener를 추가해야한다는 뜻입니까? –

+0

네, 맞습니다. – Dimmerg

+0

작동하지 않습니다. 빈 액티비티를 설정하고 사용자가 마지막 탭을 클릭하면 해당 액티비티가 표시됩니다 ... 더 이상 문제가되지 않는 메뉴가 정상적으로 나타납니다. 그러나 나는 그 빈 활동을 사용자에게 보여주고 싶지 않습니다. 난 그냥 단추처럼 싶을 뿐이야. 도와주세요. 감사. –

0

좋아, 여기에 내가하려는 일에 대한 답변이 있습니다.

동기 : 기존의 TabActivity에 '추가'탭을 추가하십시오.

1)는을 TabSpec을 만들고 질문과 같이 TabHost에 해당 탭을 추가 : 사용자가 클릭하면, 그렇게하는 등,

번 단계 PopUpWindow 또는의 ContextMenu의 어떤 종류를 엽니 다. 2) 이제 마지막으로 추가 된 탭을 뷰 유형 변수로 가져와야합니다. 탭의 인덱스가 TabActivity를 보유 (일) 추가 주 활동에서 onCreate() 메소드에서 지금) 0 3에서 시작 기억 ..에 의해

View v = TabWidget.GetChildAt(index) 

을 이렇게 onTouchListener() (나는 C# .NET을 사용, 그래서 추가 v.Click+=myFunction()) PopupWindow 또는 ContextMenu의 코드를 작성하거나 거기에서 수행 할 작업을 모두 작성하십시오.