【问题标题】:TabActivity and child tabsTabActivity 和子选项卡
【发布时间】:2012-09-26 19:16:47
【问题描述】:

我有一个 tabActivity 类。

class MainActivity extends TabActivity {
    TabHost tabHost = getTabHost();

TabSpec tabOne= tabHost.newTabSpec("Tab One");
tabOne.setIndicator("Tab One", getResources().getDrawable(R.drawable.tab1));
Intent tabOneIntent = new Intent(this, PhotosActivity.class);
tabOne.setContent(tabOneIntent);

TabSpec tabTwo= tabHost.newTabSpec("Tab Two");
tabTwo.setIndicator("Tab Two", getResources().getDrawable(R.drawable.tab2));
Intent tabTwoIntent = new Intent(this, TabTwo.class);
tabTwo.setContent(videosIntent);

tabHost.addTab(tabOne);
tabHost.addTab(tabTwo);
}

其中一个标签是

class TabTwo extends Acitity implements OnClickListener{
    public void onClick(View view) {
       //open a new activity within the tab  
    }
}

虚拟活动是

class DummyActivity extends Activity {
}

当我单击选项卡二时,将调用 TabTwo 类。当我从类中单击一个按钮时,我想在选项卡中打开一个 DummyActivity。现在使用的代码是

context.startActivity(intentObject);

这将在全新的窗口中打开新活动。如何从选项卡中打开 DummyActivity?

提前致谢!

@all 感谢您的回复。我使用 ActivityGroup 和子活动解决了这个问题。

【问题讨论】:

  • 我通常从监听器打开活动,例如 context.startActivity(new Intent((TabTwo)context, DummyActivity.class));
  • 您可以将 TabTwo 设置为 ViewSwitcher 布局并以这种方式解决。或者将tabTwo 设为静态并将其内容设置为新的。也许它正在工作。

标签: android android-layout android-intent android-tabhost


【解决方案1】:
  1. 它看起来不像通常的 android 应用程序体验。做这些事情要非常小心。

  2. 从 3.0 开始最好使用Fragments。如果您想支持早期的设备 - 使用兼容性库。

【讨论】:

    【解决方案2】:

    你不能使用context.startActivity(intentObject);

    看这里:

        TabHost tabHost = getTabHost();
    
        TabSpec photospec = tabHost.newTabSpec("Photos");
        photospec.setIndicator("Photos", getResources().getDrawable(R.drawable.icon1));
        Intent photosIntent = new Intent(this, PhotosActivity.class);
        photospec.setContent(photosIntent);
    
        TabSpec videospec = tabHost.newTabSpec("Videos");
        videospec.setIndicator("Videos", getResources().getDrawable(R.drawable.icon2));
        Intent videosIntent = new Intent(this, VideosActivity.class);
        videospec.setContent(videosIntent);
    
        tabHost.addTab(photospec);
        tabHost.addTab(videospec);
    

    来自http://www.androidhive.info/2011/08/android-tab-layout-tutorial/

    您必须使用TabHostTabSpecIntent 作为标签。然后TabHost.addTab(TabSpec)

    【讨论】:

    • 问题已编辑!我正在使用 TabHost。动机是从 TabTwo.class 中打开一个子活动
    【解决方案3】:

    像这样使用第一个标签

     public class TabsActivity extends TabActivity {
    
          TabSpec spec1 = tabHost.newTabSpec("tabone");
        spec1.setIndicator(createTabView(tabHost.getContext(), "tabone", R.drawable.tab_home));
        Intent inte = new Intent(TabsActivity.this, PhotosActivity.class);
        inte.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        spec1.setContent(inte);
    
    
        TabSpec spec2 = tabHost.newTabSpec("tabtwo");
        spec2.setIndicator(createTabView(tabHost.getContext(), "tabtwo", R.drawable.tab_account));
        Intent _int = new Intent(TabsActivity.this, TabTwoActivity.class);
        _int.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        spec2.setContent(_int);
    
        tabHost.addTab(spec1);
        tabHost.addTab(spec2);
    

    第二个标签

            public class TabTwoActivity extends TabActivity {
    
           TabSpec spec1 = tabHostacc.newTabSpec("tabone");
        spec1.setIndicator(createTabView(tabHostacc.getContext(), "tabone", R.drawable.tab_home));
        Intent inte = new Intent(TabTwoActivity .this,  yourfirstActivity.class);
        inte.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        spec1.setContent(inte);      
    
        TabSpec spec2 = tabHostacc.newTabSpec("tabtwo");
        spec2.setIndicator(createTabView(tabHostacc.getContext(), "tabtwo", R.drawable.tab_account));
        Intent _int = new Intent(TabTwoActivity .this, yoursecondActivity.class);
        _int.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        spec2.setContent(_int);      
    
        tabHostacc.addTab(spec1);
        tabHostacc.addTab(spec2);
    

    演示活动

        class yourfirstActivity extends Activity {
         }
    
         class yoursecondActivityextends Activity {
         }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多