1

在我的应用程序中有 3 个选项卡,第三个选项卡有 3 个不同的按钮及其相应的活动(我为此使用了活动组)。在运行应用程序时,所有选项卡及其相应的活动都显示正常。我的问题出在第三个选项卡中。在该选项卡中,我有 3 个按钮。AB 和 c 默认加载按钮 A 现在我通过单击按钮 B 更改为按钮 B。

现在,如果我单击第三个选项卡,它必须再次显示按钮 A,但它不会改变。

这是我的完整代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.groupinion_tabs);
    tabHost = (TabHost) findViewById(android.R.id.tabhost);

    setTabs();

}

/*
 * control go when specipic tab is pressed
 */
private void setTabs() {

    //call the addTab method to add tabs
    addTab("Questions", R.drawable.tab_questions, Gropinion_Questions.class);
    addTab("Ask", R.drawable.tab_ask, Groupinion_Ask.class);
    addTab("My Stuff", R.drawable.tab_stuff, Groupinion_Mystuff.class);
    //addTab("Friends", R.drawable.tab_friends, Groupinion_Find_Friends.class);

}

// set the tab name and symbols to the tab
private void addTab(String labelId, int drawableId, Class<?> c) 
{
    tabHost = getTabHost();

    String strid="";

    for(int i=0;i<=2;i++)
    {
        if(i==0){
            strid="one";}
        if(i==1){
            strid="two";}
        if(i==2){
            strid="three";}
    }
    //tabHost.setCurrentTab(Singleton.tabID);
    tabHost.setCurrentTab(0);
    Intent intent = new Intent(this, c);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId);

    View tabIndicator = LayoutInflater.from(this).inflate(
            R.layout.groupnion_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);

    if (tabHost.getCurrentTab() == 0) {
        getTabWidget().getChildAt(0).setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        startActivity(getIntent());
                    }
                });
    }

    if (tabHost.getCurrentTab() == 1) {
        getTabWidget().getChildAt(1).setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        startActivity(getIntent());
                    }
                });
    }

    if (tabHost.getCurrentTab() == 2) {
        getTabWidget().getChildAt(2).setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        Intent i=new Intent().setClass(getApplicationContext(), Groupinion_Mystuff.class);
                        navigateUpTo(i);
                        startActivity(i);
                        //startActivity(getIntent());
                    }
                });
    }

    //call tabchanged listener when user click another tab
    tabHost.setOnTabChangedListener(new OnTabChangeListener() {

        @Override
        public void onTabChanged(String tabId) {
            // TODO Auto-generated method stub


            if (tabId.equals("one")) {
                getTabWidget().getChildAt(0).setOnClickListener(
                        new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                startActivity(getIntent());
                            }
                        });

            } else if (tabId.equals("two")) {

                getTabWidget().getChildAt(1).setOnClickListener(
                        new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                startActivity(getIntent());
                            }
                        });
            }else if (tabId.equals("three")) {

                getTabWidget().getChildAt(2).setOnClickListener(
                        new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                startActivity(getIntent());
                            }
                        });
            }

        }


        }
    });

}

}

提前致谢

4

0 回答 0