当前位置: 首页 > 知识库问答 >
问题:

Android TabHost不工作。我没有犯任何错误

徐昊焜
2023-03-14

我创建了一个应用程序来显示TabHost。但是,当我启动应用程序在模拟器关闭说应用程序不幸关闭。我在网上搜索,但找不到任何解决方案。我的代码activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">


<TabHost
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/tabHost"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"></TabWidget>

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <LinearLayout
                android:id="@+id/tab1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical">

            </LinearLayout>

            <LinearLayout
                android:id="@+id/tab2"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical"></LinearLayout>

            <LinearLayout
                android:id="@+id/tab3"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical"></LinearLayout>
        </FrameLayout>
    </LinearLayout>
</TabHost>

美娜ctivity.java

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TabHost tabHost=(TabHost)findViewById(R.id.tabHost);

    TabSpec tab1 = tabHost.newTabSpec("First Tab");
    TabSpec tab2 = tabHost.newTabSpec("Second Tab");
    TabSpec tab3 = tabHost.newTabSpec("Third tab");

    tab1.setIndicator("Tab1");
    tab1.setContent(new Intent(this,Tab1Activity.class));

    tab2.setIndicator("Tab2");
    tab2.setContent(new Intent(this,Tab2Activity.class));

    tab3.setIndicator("Tab3");
    tab3.setContent(new Intent(this,Tab3Activity.class));

    tabHost.addTab(tab1);
    tabHost.addTab(tab2);
    tabHost.addTab(tab3);
}

我已经为Tab1、Tab2和Tab3创建了单独的. java文件。

Logcat是

06-01 01:40:35.429 1847-1847/com。realtech。6月1日带dalvikvm的标签﹕ threadid=1:线程退出时出现未捕获异常(组=0xa4cd3b20)06-01 01:40:35.441 1847-1847/com。realtech。6月1日表E/AndroidRuntime﹕ 致命异常:主进程:com。realtech。june_1_tab,PID:1847 java。lang.RuntimeException:无法启动活动组件信息{com.realtech.june_1_tab/com.realtech.june_1_tab.MainActivity}:java。android上的lang.NullPointerException。应用程序。活动线程。在android上执行LaunchActivity(ActivityThread.java:2184)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:2233)。应用程序。活动线程。在Android上获得800美元(ActivityThread.java:135)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:1196)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:102)。操作系统。活套。android上的loop(Looper.java:136)。应用程序。活动线程。java上的main(ActivityThread.java:5001)。朗,反思一下。方法java上的Invokenactive(本机方法)。朗,反思一下。方法在com上调用(Method.java:515)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(zyteinit.java:785)。Android内部的操作系统。合子体。dalvik的main(ZygoteInit.java:601)。系统原生艺术。主要(本机方法)由以下原因引起:java。android上的lang.NullPointerException。小装置。塔布霍斯特。addTab(TabHost.java:236)位于com。realtech。六月一日。主要活动。android上的onCreate(MainActivity.java:34)。应用程序。活动android上的performCreate(Activity.java:5231)。应用程序。仪器。android上的callActivityOnCreate(Instrumentation.java:1087)。应用程序。活动线程。在android上执行LaunchActivity(ActivityThread.java:2148)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:2233)。应用程序。活动线程。在android上访问800美元(ActivityThread.java:135)
。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:1196)
。操作系统。汉德勒。android上的dispatchMessage(Handler.java:102)。操作系统。活套。android上的loop(Looper.java:136)。应用程序。活动线程。main(ActivityThread.java:5001)
位于java。朗,反思一下。方法java上的Invokenactive(本机方法)。朗,反思一下。方法在com上调用(Method.java:515)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(zyteinit.java:785)。Android内部的操作系统。合子体。main(ZygoteInit.java:601)
位于dalvik。系统原生艺术。main(本地方法)06-01 01:42:24.121 1847-1847/com。realtech。6月1日制表I/流程﹕ 发出信号。PID:1847 SIG:9

共有2个答案

漆雕原
2023-03-14

onCreate()第34行有一个空指针异常。

另外,我不推荐您使用的模式(活动与承载其他活动的选项卡。尝试切换到具有FragmentPagerAdapter和Fragments作为UI的ViewPager。它更容易,更干净。

林俭
2023-03-14

你犯了一个错误。在布局XML文件中,您使用的默认设置@id/tabhost未运行的tabhost id必须更改为@android:id/tabhost。

 类似资料:
  • 我正在尝试连接到openweather的测试代码。org和providen api。 如果我使用浏览器访问url: http://api.openweathermap.org/data/2.5/weather?id=2172797 然后,我得到了正确的Json:{“coord”:{“lon”: 145.77,“lat”:-16.92},“天气”:[{“id”: 803,“main”:“Clouds

  • Win7-64,Python 3.6。将tensorflow升级到1.8后,如下文本 给出错误: Traceback(最近一次调用最后一次):File"C:\Program Files\Python36\lib\site-pack\tenorflow\python\pywrap_tensorflow_internal.py",第14行,swig_import_helper返回importlib.i

  • 以前它工作得很好,现在它不工作了 我使用了以下插件: 登录代码很简单,如说明所示: 离子型: ionic(ionic CLI):4.1.2离子框架:离子角3.9.2@ionic/app脚本:1.3.1 科尔多瓦: 科尔多瓦(科尔多瓦CLI): 8.1.2(cordova-lib@8.1.1)科尔多瓦平台:Android7.1.4科尔多瓦插件:科尔多瓦插件-离子键盘2.1.2,科尔多瓦插件-离子-w

  • 为什么这个节目不播放音乐?我正在尝试用JavaFX制作一个应用程序,允许用户播放任何他想播放的MP3文件。但它根本不起作用!为什么? 它绝对不会出错! 我做了一些研究并替换了一些代码。现在唯一发生的事情是没有音乐播放和应用程序停止运行。 我做错了什么?

  • 我正在使用ApachePOI读取Excel文件,它在本地机器(独立程序)中运行良好,但在服务器(IBMWebSphere)中未运行。当遇到实例化工作簿时,它停止工作。 下面的罐子被使用。 commons-codec-1.5.jarpoi-3.9.jarpoi-examples-3.9.jarpoi-ooxml-3.9.jarpoi-ooxml-schemas-3.9.jarxmlbeans-2.6

  • 理解Gradle profile报告时遇到了困难,这些报告的执行任务结果是“没有工作”。 Gradle文档只是声明,结果将反映为没有跳过但没有工作的任务。这是否意味着构建任务不起作用,只是调用和/或依赖Java插件中的其他子任务?