Android 使用按钮在选项卡之间切换

Android 使用按钮在选项卡之间切换,android,Android,有人知道如何创建一个按钮来帮助我在选项卡之间切换吗 Button button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() { public void onClick(View v) {{ // Perform action on click if (v.getId(

有人知道如何创建一个按钮来帮助我在选项卡之间切换吗

Button button1 = (Button) findViewById(R.id.button1);    
    button1.setOnClickListener(new OnClickListener() {  
        public void onClick(View v) {{
            // Perform action on click   
                if (v.getId() == R.id.button1) {
                    setContentView(R.layout.tab3);    
                }
                else if (v.getId() == R.id.button1) {
                    setContentView(R.layout.main);  
                }
            }
        }
    });
}}
这是我的tab 1中的代码,下一个代码是我的tab.xml中的按钮。我想按下下面的“购买”按钮,我想让它转到另一个选项卡,这可能吗

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/imageButton1"
        android:text="Buy"  
        android:onClick="tab3" />
以下是对以下内容的解释:

创建主活动:

public class HelloTabWidget extends TabActivity
并为每个选项卡创建一个活动:

public class ArtistsActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView textview = new TextView(this);
        textview.setText("This is the Artists tab");
        setContentView(textview); // you replace this with your layout for each view
    }
}
在主活动(HelloTabWidget)中,启动TabHost:

TabHost tabHost = getTabHost();
并为每个选项卡添加选项卡规格:

intent = new Intent().setClass(this, ArtistsActivity.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("artists").setIndicator("Artists",
                  res.getDrawable(R.drawable.ic_tab_artists))
              .setContent(intent);
tabHost.addTab(spec);
选择需要作为默认选项卡的选项卡:

tabHost.setCurrentTab(int index);
最后,应在包含按钮的选项卡的活动中设置按钮的onClickListener,以便:

intent = new Intent().setClass(this, ArtistsActivity.class);
startActivity(intent);
如果希望在所有选项卡之间切换,则此按钮应出现在所有选项卡中。

以下是对以下内容的说明:

创建主活动:

public class HelloTabWidget extends TabActivity
并为每个选项卡创建一个活动:

public class ArtistsActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView textview = new TextView(this);
        textview.setText("This is the Artists tab");
        setContentView(textview); // you replace this with your layout for each view
    }
}
在主活动(HelloTabWidget)中,启动TabHost:

TabHost tabHost = getTabHost();
并为每个选项卡添加选项卡规格:

intent = new Intent().setClass(this, ArtistsActivity.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("artists").setIndicator("Artists",
                  res.getDrawable(R.drawable.ic_tab_artists))
              .setContent(intent);
tabHost.addTab(spec);
选择需要作为默认选项卡的选项卡:

tabHost.setCurrentTab(int index);
最后,应在包含按钮的选项卡的活动中设置按钮的onClickListener,以便:

intent = new Intent().setClass(this, ArtistsActivity.class);
startActivity(intent);

如果希望在所有选项卡之间切换,则此按钮应出现在所有选项卡中。

当您创建选项卡时,为它们提供一个标记,让我们在变量选项卡1中存储一个这样的标记。因此,在您的
onClick()
方法中,您可以通过以下方式选择该选项卡:

getTabHost().setCurrentTabByTag(TAB_1);
或者,正如midoalageb所写,通过索引:

getTabHost().setCurrentTab(index);

当您创建选项卡时,给它们一个标记,让我们在变量TAB_1中存储一个这样的标记。因此,在您的
onClick()
方法中,您可以通过以下方式选择该选项卡:

getTabHost().setCurrentTabByTag(TAB_1);
或者,正如midoalageb所写,通过索引:

getTabHost().setCurrentTab(index);

+1个Midoalageb和+1个Mark Gjol为您提供了切换选项卡所需的准确信息。他们遗漏的是您尝试执行的事件的代码。您需要做的是在
TAB1
上设置一个按钮,该按钮将有一个
onClick()
监听器,该监听器将调用
getTabHost().setCurrentTabByTag(TAB2)
getTabHost().setCurrentTab(1)。这两种方法中的任何一种都能很好地发挥作用,这取决于你想怎么做

您知道如何使用按钮和
onClick()
侦听器吗?如果不是,谷歌有一些很好的例子。只需在选项卡视图中创建一个按钮,然后设置onClick,然后将代码放入其中,以便切换到所需的选项卡

这和这个非常相似,可能会帮助你


getTabHost().setCurrentTabByTag(TAB2)

这将查找标记为“TAB2”的选项卡并更改为该选项卡


getTabHost().setCurrentTab(1)

这将查找索引为“1”的选项卡并更改为该选项卡


关于您的xml

xml文件主要用于从视图的实现中抽象定义视图。这允许您或其他开发人员在需要时为代码提供不同的视图。它有助于提供一种使用模式的方法。然而,这种模式在Android中有点不同,但xml文件通常被认为是该模式中的视图

所以是的,如果要有多个按钮,则需要在xml中定义它们,并在代码中实现它们


关于您的按钮dilema

实际上,在头版为您提供了一个这样的例子。请记住,Android作为一个开发平台正在迅速成熟,而且很多这方面的东西实际上已经在网上得到了很好的证明。API文档也很好,并提供了很好的示例。去那个里看看,你们很可能会在那个里解决很多更容易的问题

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TextView textview = new TextView(this);
    textview.setText("This is Tab1");
    setContentView(textview);

    final Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Perform action on click
            // perform the switch to tab event here for instance...
            getTabHost().setCurrentTabByTag("TAB2");
        }
    });
}

+1个Midoalageb和+1个Mark Gjol为您提供了切换选项卡所需的准确信息。他们遗漏的是您尝试执行的事件的代码。您需要做的是在
TAB1
上设置一个按钮,该按钮将有一个
onClick()
监听器,该监听器将调用
getTabHost().setCurrentTabByTag(TAB2)
getTabHost().setCurrentTab(1)。这两种方法中的任何一种都能很好地发挥作用,这取决于你想怎么做

您知道如何使用按钮和
onClick()
侦听器吗?如果不是,谷歌有一些很好的例子。只需在选项卡视图中创建一个按钮,然后设置onClick,然后将代码放入其中,以便切换到所需的选项卡

这和这个非常相似,可能会帮助你


getTabHost().setCurrentTabByTag(TAB2)

这将查找标记为“TAB2”的选项卡并更改为该选项卡


getTabHost().setCurrentTab(1)

这将查找索引为“1”的选项卡并更改为该选项卡


关于您的xml

xml文件主要用于从视图的实现中抽象定义视图。这允许您或其他开发人员在需要时为代码提供不同的视图。它有助于提供一种使用模式的方法。然而,这种模式在Android中有点不同,但xml文件通常被认为是该模式中的视图

所以是的,如果要有多个按钮,则需要在xml中定义它们,并在代码中实现它们


关于您的按钮dilema

实际上,在头版为您提供了一个这样的例子。请记住,Android作为一个开发平台正在迅速成熟,而且很多这方面的东西实际上已经在网上得到了很好的证明。API文档也很好,并提供了很好的示例。去那个里看看,你们很可能会在那个里解决很多更容易的问题

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TextView textview = new TextView(this);
    textview.setText("This is Tab1");
    setContentView(textview);

    final Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Perform action on click
            // perform the switch to tab event here for instance...
            getTabHost().setCurrentTabByTag("TAB2");
        }
    });
}

对不起,我还是很困惑,你是什么意思?我假设你已经从代码中创建了一个按钮,并且想知道在
onClick()
方法中放置什么。如果您有一个TabActivity,那么您将获得您的TabHost(对象cont