添加一个意图在Android的一个TabActivity [英] Adding an intent to a TabActivity in Android

查看:100
本文介绍了添加一个意图在Android的一个TabActivity的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我查了关于如何建立在Android的一个TAB一些在线教程,发现适合我的需求的教程。我很高兴能实现它和它的工作好。问题来了,当我想每一个单独的标签推给一个单独的活动。我无法启动和意图传递控制。我只给出主code至于如何我提出了标签的作为并没有在这个问题上的任何功能所需建设的XML。

下面是code:

 公共类Secondactivity扩展TabActivity {
私人TabHost mTab​​Host;
私人无效setupTabHost(){
mTabHost =(TabHost)findViewById(android.R.id.tabhost);
mTabHost.setup();
}
@覆盖
保护无效的onCreate(包savedInstanceState){
setupTabHost();
    。mTabHost.getTabWidget()setDividerDrawable(se.copernicus.activity.R.drawable.tab_divider);

    setupTab(新的TextView(本),月);
    setupTab(新的TextView(本),周);
    setupTab(新的TextView(本),日);
}
私人无效setupTab(最终视图中查看,最终字符串变量){
查看TabView的= createTabView(mTabHost.getContext(),标签);

则tabspec setContent = mTab​​Host.newTabSpec(标签).setIndicator(TabView的)
        .setContent(新TabContentFactory(){
            公共查看createTabContent(字符串变量){
                返回查看;
            }
        });
mTabHost.addTab(setContent);

}

私有静态视图createTabView(最终上下文的背景下,最终的文本字符串){
查看查看= LayoutInflater.from(上下文)
        .inflate(R.layout.tabs_bg,NULL);
TextView的电视=(TextView中)view.findViewById(R.id.tabsText);
tv.setText(文本);
返回查看;
   }
}
 

我如何开始一个新的意图,这样的选项卡时就应该从 Secondactivity WeekActivity DayActivity

解决方案

 公共类MainTabActivity扩展TabActivity

{
    私人TabHost mTab​​Host;

@覆盖
公共无效的onCreate(包savedInstanceState)
{
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.program_guide_tab_activity_layout);

    mTabHost =(TabHost)findViewById(android.R.id.tabhost);
    setupTab(新的TextView(本),的getString(R.string.live));
    setupTab(新的TextView(本),的getString(R.string.guide));
    setupTab(新的TextView(本),的getString(R.string.remotes));
    setupTab(新的TextView(本),的getString(R.string.settings));

    mTabHost.setCurrentTabByTag(的getString(R.string.live));
}

私人无效setupTab(最终视图中查看,最终字符串变量)
{
    查看TabView的= createTabView(mTabHost.getContext(),标签);

    如果(tag.compareTo(的getString(R.string.live))== 0)
    {
        意向意图=新的意图(getApplicationContext(),LiveActivity.class);

        则tabspec setContent = mTab​​Host.newTabSpec(的getString(R.string.live))。setIndicator(TabView的).setContent(新TabHost.TabContentFactory()
        {

            公共查看createTabContent(字符串标签)
            {
                返回查看;
            }

        });

        setContent.setContent(意向);
        mTabHost.addTab(setContent);
    }

    如果(tag.compareTo(的getString(R.string.guide))== 0)
    {
        意向意图=新的意图(getApplicationContext(),ProgramGuide.class);

        则tabspec setContent = mTab​​Host.newTabSpec(的getString(R.string.guide))。setIndicator(TabView的).setContent(新TabHost.TabContentFactory()
        {

            公共查看createTabContent(字符串标签)
            {
                返回查看;
            }

        });

        setContent.setContent(意向);
        mTabHost.addTab(setContent);
    }

    如果(tag.compareTo(的getString(R.string.remotes))== 0)
    {
        意向意图=新的意图(getApplicationContext(),RemoteMultiPanel.class);

        则tabspec setContent = mTab​​Host.newTabSpec(的getString(R.string.remotes))。setIndicator(TabView的).setContent(新TabHost.TabContentFactory()
        {

            公共查看createTabContent(字符串标签)
            {
                返回查看;
            }

        });

        setContent.setContent(意向);
        mTabHost.addTab(setContent);
    }

    如果(tag.compareTo(的getString(R.string.settings))== 0)
    {
        意向意图=新的意图(getApplicationContext(),SettingsMain.class);

        则tabspec setContent = mTab​​Host.newTabSpec(的getString(R.string.settings))。setIndicator(TabView的).setContent(新TabHost.TabContentFactory()
        {

            公共查看createTabContent(字符串标签)
            {
                返回查看;
            }

        });

        setContent.setContent(意向);
        mTabHost.addTab(setContent);
    }
}

私有静态视图createTabView(最终上下文的背景下,最终的文本字符串)
{
    查看查看= LayoutInflater.from(上下文).inflate(R.layout.tabs_bg,NULL);
    TextView的电视=(TextView中)view.findViewById(R.id.tabsText);
    tv.setText(文本);

    INT渣油= 0;
    ImageView的iconImageView =(ImageView的)view.findViewById(R.id.imageView1);

    如果(text.compareTo(context.getString(R.string.settings))== 0)
    {
        渣油= R.drawable.settings_icon;
    }
    否则,如果(text.compareTo(context.getString(R.string.remotes))== 0)
    {
        渣油= R.drawable.remotes_icon;
    }
    否则,如果(text.compareTo(context.getString(R.string.live))== 0)
    {
        渣油= R.drawable.live_icon;
    }
    否则,如果(text.compareTo(context.getString(R.string.guide))== 0)
    {
        渣油= R.drawable.guide_icon;
    }

    iconImageView.setImageResource(渣油);

    返回查看;
}
 

}

检查出setupTap()方法: 它的控制引发活动4种可能的意图的: LiveActivity,ProgramGuide,......

I checked up some online tutorials on how to build a TAB in android and saw a tutorial that fit my requirements. I was happy to implement it and it worked well. The problem came when I wanted each separate tab to push to one separate activity. I couldn't start and intent to pass on the control. I've given only the main code as to how I am making the Tab's as the xml required for the construction does not have any functionality in this question.

Here is the code:

public class Secondactivity extends TabActivity {
private TabHost mTabHost;
private void setupTabHost() {
mTabHost = (TabHost) findViewById(android.R.id.tabhost);
mTabHost.setup();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
setupTabHost();
    mTabHost.getTabWidget().setDividerDrawable(se.copernicus.activity.R.drawable.tab_divider);

    setupTab(new TextView(this), "Month");
    setupTab(new TextView(this), "Week");
    setupTab(new TextView(this), "Day");
}
private void setupTab(final View view, final String tag) {
View tabview = createTabView(mTabHost.getContext(), tag);

TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview)
        .setContent(new TabContentFactory() {
            public View createTabContent(String tag) {
                return view;
            }
        });
mTabHost.addTab(setContent);

}

private static View createTabView(final Context context, final String text) {
View view = LayoutInflater.from(context)
        .inflate(R.layout.tabs_bg, null);
TextView tv = (TextView) view.findViewById(R.id.tabsText);
tv.setText(text);
return view;
   }
}

How can I start a new Intent so that when the Tab is clicked it should go from Secondactivity to WeekActivity or DayActivity ?

解决方案

public class MainTabActivity extends TabActivity

{
    private TabHost mTabHost;

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

    mTabHost = (TabHost) findViewById(android.R.id.tabhost);
    setupTab(new TextView(this), getString(R.string.live));
    setupTab(new TextView(this), getString(R.string.guide));
    setupTab(new TextView(this), getString(R.string.remotes));
    setupTab(new TextView(this), getString(R.string.settings));

    mTabHost.setCurrentTabByTag(getString(R.string.live));
}

private void setupTab(final View view, final String tag)
{
    View tabview = createTabView(mTabHost.getContext(), tag);

    if (tag.compareTo(getString(R.string.live)) == 0)
    {
        Intent intent = new Intent(getApplicationContext(), LiveActivity.class);

        TabSpec setContent = mTabHost.newTabSpec(getString(R.string.live)).setIndicator(tabview).setContent(new TabHost.TabContentFactory()
        {

            public View createTabContent(String tag)
            {
                return view;
            }

        });

        setContent.setContent(intent);
        mTabHost.addTab(setContent);
    }

    if (tag.compareTo(getString(R.string.guide)) == 0)
    {
        Intent intent = new Intent(getApplicationContext(), ProgramGuide.class);

        TabSpec setContent = mTabHost.newTabSpec(getString(R.string.guide)).setIndicator(tabview).setContent(new TabHost.TabContentFactory()
        {

            public View createTabContent(String tag)
            {
                return view;
            }

        });

        setContent.setContent(intent);
        mTabHost.addTab(setContent);
    }

    if (tag.compareTo(getString(R.string.remotes)) == 0)
    {
        Intent intent = new Intent(getApplicationContext(), RemoteMultiPanel.class);

        TabSpec setContent = mTabHost.newTabSpec(getString(R.string.remotes)).setIndicator(tabview).setContent(new TabHost.TabContentFactory()
        {

            public View createTabContent(String tag)
            {
                return view;
            }

        });

        setContent.setContent(intent);
        mTabHost.addTab(setContent);
    }

    if (tag.compareTo(getString(R.string.settings)) == 0)
    {
        Intent intent = new Intent(getApplicationContext(), SettingsMain.class);

        TabSpec setContent = mTabHost.newTabSpec(getString(R.string.settings)).setIndicator(tabview).setContent(new TabHost.TabContentFactory()
        {

            public View createTabContent(String tag)
            {
                return view;
            }

        });

        setContent.setContent(intent);
        mTabHost.addTab(setContent);
    }
}

private static View createTabView(final Context context, final String text)
{
    View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null);
    TextView tv = (TextView) view.findViewById(R.id.tabsText);
    tv.setText(text);

    int resId = 0;
    ImageView iconImageView = (ImageView) view.findViewById(R.id.imageView1);

    if (text.compareTo(context.getString(R.string.settings)) == 0)
    {
        resId = R.drawable.settings_icon;
    }
    else if (text.compareTo(context.getString(R.string.remotes)) == 0)
    {
        resId = R.drawable.remotes_icon;
    }
    else if (text.compareTo(context.getString(R.string.live)) == 0)
    {
        resId = R.drawable.live_icon;
    }
    else if (text.compareTo(context.getString(R.string.guide)) == 0)
    {
        resId = R.drawable.guide_icon;
    }

    iconImageView.setImageResource(resId);

    return view;
}

}

check out the setupTap() method: it's control the 4 possible intent's that raised activities: LiveActivity, ProgramGuide, ....

这篇关于添加一个意图在Android的一个TabActivity的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆