gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 14:25:30 25 4
gpt4 key购买 nike

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

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);
}
}
}
});
}}

这是我的选项卡 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" />

这是我的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

最佳答案

+1 Midoalageb 和 +1 Mark Gjol 已经为您提供了切换选项卡所需的确切信息。他们遗漏的是您尝试执行的事件的代码。您需要做的是在 TAB1 上设置一个按钮,该按钮将有一个 onClick() 监听器,该监听器将调用 getTabHost().setCurrentTabByTag(TAB2); getTabHost().setCurrentTab(1);。这些中的任何一个都可以正常工作,只是取决于你想怎么做。

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

Another post这与可能对您有所帮助的这个非常相似。


getTabHost().setCurrentTabByTag(TAB2);

这将查找标有“TAB2”的选项卡并切换到该选项卡。


getTabHost().setCurrentTab(1);

这将查找索引为“1”的选项卡并切换到该选项卡。


关于您的 xml

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

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


关于您的按钮困境

API for Button from google实际上在首页上为您提供了一个示例。请记住,作为一个开发平台,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");
}
});
}

关于android - 使用按钮在选项卡之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8727311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com