使用按钮在标签之间切换

use*_*123 1 android

有谁知道如何创建一个按钮,可以帮助我在标签之间切换?

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);  
                }
            }
        }
    });
}}
Run Code Online (Sandbox Code Playgroud)

这是我的选项卡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" />
Run Code Online (Sandbox Code Playgroud)

这是我的logcat文件

01-05 16:04:20.903: D/dalvikvm(215): GC freed 806 objects / 70928 bytes in 96ms
01-05 15:30:29.072: D/AndroidRuntime(213): Shutting down VM
01-05 15:30:29.082: W/dalvikvm(213): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
01-05 15:30:29.082: E/AndroidRuntime(213): Uncaught handler: thread main exiting due to uncaught exception
01-05 15:30:29.132: E/AndroidRuntime(213): java.lang.IllegalStateException: Could not find a method tab3(View) in the activity
01-05 15:30:29.132: E/AndroidRuntime(213):  at android.view.View$1.onClick(View.java:2020)
01-05 15:30:29.132: E/AndroidRuntime(213):  at android.view.View.performClick(View.java:2364)
01-05 15:30:29.132: E/AndroidRuntime(213):  at android.view.View.onTouchEvent(View.java:4179)
01-05 15:30:29.132: E/AndroidRuntime(213):  at android.widget.TextView.onTouchEvent(TextView.java:6541)
01-05 15:30:29.132: E/AndroidRuntime(213):  at android.view.View.dispatchTouchEvent(View.java:3709)
01-05 16:04:25.693: E/AndroidRuntime(215):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
01-05 16:04:25.693: E/AndroidRuntime(215):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
01-05 16:04:25.693: E/AndroidRuntime(215):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
01-05 16:04:25.693: E/AndroidRuntime(215):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
01-05 16:04:25.693: E/AndroidRuntime(215):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
01-05 16:04:25.693: E/AndroidRuntime(215):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
01-05 16:04:25.693: E/AndroidRuntime(215):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
01-05 16:04:25.693: E/AndroidRuntime(215):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
01-05 16:04:25.693: E/AndroidRuntime(215):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
01-05 16:04:25.693: E/AndroidRuntime(215):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
01-05 16:04:25.693: E/AndroidRuntime(215):  at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
01-05 16:04:25.693: E/AndroidRuntime(215):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
01-05 16:04:25.693: E/AndroidRuntime(215):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
01-05 16:04:25.693: E/AndroidRuntime(215):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-05 16:04:25.693: E/AndroidRuntime(215):  at android.os.Looper.loop(Looper.java:123)
01-05 16:04:25.693: E/AndroidRuntime(215):  at android.app.ActivityThread.main(ActivityThread.java:4363)
01-05 16:04:25.693: E/AndroidRuntime(215):  at java.lang.reflect.Method.invokeNative(Native Method)
01-05 16:04:25.693: E/AndroidRuntime(215):  at java.lang.reflect.Method.invoke(Method.java:521)
01-05 16:04:25.693: E/AndroidRuntime(215):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
01-05 16:04:25.693: E/AndroidRuntime(215):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
01-05 16:04:25.693: E/AndroidRuntime(215):  at dalvik.system.NativeStart.main(Native Method)
01-05 16:04:25.693: E/AndroidRuntime(215): Caused by: java.lang.NoSuchMethodException: Tab3
01-05 16:04:25.693: E/AndroidRuntime(215):  at java.lang.ClassCache.findMethodByName(ClassCache.java:308)
01-05 16:04:25.693: E/AndroidRuntime(215):  at java.lang.Class.getMethod(Class.java:1014)
01-05 16:04:25.693: E/AndroidRuntime(215):  at android.view.View$1.onClick(View.java:2017)
01-05 16:04:25.693: E/AndroidRuntime(215):  ... 25 more
01-05 16:04:25.733: I/dalvikvm(215): threadid=7: reacting to signal 3
01-05 16:04:25.733: I/dalvikvm(215): Wrote stack trace to '/data/anr/traces.txt'
01-05 16:04:27.505: I/Process(215): Sending signal. PID: 215 SIG: 9
Run Code Online (Sandbox Code Playgroud)

pro*_*007 5

+1 Midoalageb和+1 Mark Gjol已经准确地为您提供了切换标签所需的内容.他们遗漏的是你要做的事件的代码.你需要做的是建立一个按钮是什么TAB1,将有一个onClick()监听器,将调用要么getTabHost().setCurrentTabByTag(TAB2);getTabHost().setCurrentTab(1);.其中任何一个都可以正常工作,只取决于你想怎么做.

你知道怎么做按钮和onClick()听众吗?如果没有,谷歌有一些很好的例子.只需在tabView中创建一个按钮,然后设置onClick,然后将代码放在那里以切换到所需的选项卡.

另一个与此非常相似的帖子可能会帮助你.


getTabHost()setCurrentTabByTag(TAB2).

这将查找标有"TAB2"的选项卡并更改为该选项卡.


getTabHost()setCurrentTab(1).

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


关于你的xml

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

是的,如果您要使用多个按钮,则需要在xml中定义它们并在代码中实现.


关于你的按钮困境

来自谷歌的ButtonAPI实际上在最前面的页面上为您提供了这方面的示例.请记住,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");
        }
    });
}
Run Code Online (Sandbox Code Playgroud)