如何使用Android中的按钮单击以编程方式切换选项卡

时间:2010-12-23 21:02:44

标签: java android tabs onclick android-tabhost

我几天来一直在努力解决这个问题。我试图在按钮点击时以编程方式切换标签。如果我只使用选项卡来更改活动,我的程序将完美运行,但使用setCurrentTab连接onClick方法会导致错误。这是不起作用的方法。这是一个非常基本和简单的功能,但我没有看到很多文档或人们试图用切换标签连接按钮的例子。感谢。

ImageButton next = (ImageButton) findViewById(R.id.ButtonAsk);
 next.setOnClickListener(new View.OnClickListener() 
         {         
  public void onClick(View view)  
             {

                TabHost tabHost =  (TabHost) findViewById(android.R.id.tabhost);
              tabHost.setCurrentTab(2);                
             }
         });

请参阅错误日志的编辑历史记录。

3 个答案:

答案 0 :(得分:26)

这是一个可以放在onClick()中的代码示例。正如马克和凯文所描述的那样。

    TabActivity tabs = (TabActivity) getParent();
    tabs.getTabHost().setCurrentTab(2);

我已经多次使用过这段代码。希望这澄清。

答案 1 :(得分:17)

当前活动中没有@android:id/tabhost的小部件。因此,findViewById()返回null,您对setCurrentTab()的调用失败。

现在,我的猜测是因为您将活动放在标签中。如果您将Views放在标签中,您的代码就可以运行了。您的代码也会更快,占用更少的堆空间,并且可以降低堆栈空间不足的风险。

如果您希望坚持使用当前的实施方式,请尝试拨打getParent().findViewById(),而不仅仅是findViewById()

答案 2 :(得分:7)

这对我有用

getActionBar().setSelectedNavigationItem(0);

<强>更新 将我的代码插入到问题的代码中,为其提供更多上下文...

ImageButton next = (ImageButton) findViewById(R.id.ButtonAsk);
next.setOnClickListener(new View.OnClickListener()
{
    public void onClick(View view)
    {
        getActionBar().setSelectedNavigationItem(2);
    }
});