在 Tab 主机 android 中打开子活动

Posted

技术标签:

【中文标题】在 Tab 主机 android 中打开子活动【英文标题】:Open child activity in Tab host android 【发布时间】:2014-01-26 03:09:43 【问题描述】:

我的 Tab_Bar.class 定义定义选项卡 如何打开子活动

我只为 Tab Host 使用了一个 Tab_bar.class

public class Tab_Bar extends TabActivity  

public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tab);
    setTabs() ;


 void setTabs()

    addTab("My Profile", R.drawable.home_normal, MyProfile.class);
    addTab("Search", R.drawable.search_normal, JobSearch.class);

    addTab("Saved Jobs", R.drawable.starred, Saved_jobs.class);
    addTab("Job Alert", R.drawable.job_match, JobAlert.class);


private void addTab(String labelId, int drawableId, Class<?> c)

    TabHost tabHost = getTabHost();
    Intent intent = new Intent(this, c);
    TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId); 

    View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_indicator, getTabWidget(), false);
    TextView title = (TextView) tabIndicator.findViewById(R.id.title);
    title.setText(labelId);
    ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
    icon.setImageResource(drawableId);

    spec.setIndicator(tabIndicator);
    spec.setContent(intent);
    tabHost.addTab(spec);
    tabHost.setCurrentTab(1);


我正在使用这些 xml 文件 TabIndicator.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_    
android:layout_weight="1"
android:orientation="vertical"

 android:background="@drawable/tab_indicator"
android:padding="5dp">

<ImageView android:id="@+id/icon"
    android:layout_
    android:layout_
    android:layout_centerHorizontal="true"
    android:src="@drawable/icon"

/> 

 <TextView android:id="@+id/title"
    android:layout_
    android:layout_
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true"
    style="?android:attr/tabWidgetStyle"
    android:textSize="13sp"

/>    

和 Tab.xml

<?xml version="1.0" encoding="utf-8"?>

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost" android:layout_
android:layout_>
<LinearLayout android:orientation="vertical"
    android:layout_ android:layout_>
    <FrameLayout android:id="@android:id/tabcontent"
        android:layout_ android:layout_
        android:layout_weight="1" />

    <TabWidget android:id="@android:id/tabs"
        android:layout_    android:layout_
        android:layout_weight="0"  />
</LinearLayout>
</TabHost> 

我正在为 Tab 主机使用 Tab_bar.class 和这些 xml 文件,但我对打开一无所知 选项卡主机子活动。 我是安卓新手。 请帮助我,我如何打开儿童活动 感谢任何帮助

我真的很抱歉我的英语不好

【问题讨论】:

请帮助我如何打开子活动 请查看我的帖子。 【参考方案1】:

这不是您所需要的,但可能会有所帮助。我使用这个设置来创建动态标签,然后用它们做不同的事情。

protected void onCreate(Bundle savedInstanceState) 
...

    final TabHost Tabs = (TabHost) findViewById(android.R.id.tabhost);
    Tabs.setup();
    int count;
        for (count =0;count < 2;count++)

            ...

            final int passedTabId = count; 
            NewTab.setContent(new TabHost.TabContentFactory()
            
                public View createTabContent(String tag)
                

                   ...

                 RelativeLayout layout = new RelativeLayout(getApplicationContext);
                android.widget.RelativeLayout.LayoutParams params = 
                    new RelativeLayout.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
                layout.setLayoutParams(params);
                layout.setId(some ID);
                layout.setBackgroundResource(R.drawable.room_background);

                   TextView dynText = new TextView(getApplicationContext);
                    ...
                   layout.addView(dynText);


                   return layout;

    // You can set onClickListeners, etc here and then assign them some functions you need
 // You can also create different layouts for every tab according to the passedTabId
                

            );

            Tabs.addTab(NewTab);
        

问题是,您不能简单地将另一个活动设置为在每个选项卡中运行。您需要为在该选项卡中创建的对象设置一些所需的功能,但主要活动保持不变。祝你好运:)

【讨论】:

【参考方案2】:

首先尝试使用 Fragment 创建选项卡。

您正在使用的功能现在已弃用。

我已经通过Dynamically changing the fragments inside a fragment tab host?发布了完整的帖子

请检查一下,如果您有任何疑问,请告诉我。

简单地将每个定义的步骤一个一个地放松。

概念

我举一个简单的例子来说明这个片段是如何工作的。

以您的床为例。您的床由多种物品组成,例如枕头、床单等。 现在考虑一个你的床单很脏的情况。所以你现在要做什么。您只需用一张新床单替换该床单,然后您就会睡得很香:)

同样,当您需要更改 UI 时...然后此片段将替换为新片段。

就是这样。现在你可以继续我的帖子了。

谢谢!

【讨论】:

以上是关于在 Tab 主机 android 中打开子活动的主要内容,如果未能解决你的问题,请参考以下文章

Android - 父活动应确定子活动调用它

如何在不从当前活动选项卡中获取焦点的情况下将子窗口添加到 QMdiArea(设置为 TAB 模式)?

Android 垂直标签主机

Android on Back Pressed 多个子活动不起作用

Layui子页面打开父页面tab问题

Android界面编程--使用活动条(ActionBar)--实现Tab导航