android - 运行 android HelloTabWidget 示例的问题 - addTab() 上的 NullPointerException

标签 android android-tabhost

我试过 Tab Layout example ,并且我还修复了示例中的一些拼写错误(并将所有 Activity 添加到 list 中)。但是,当我在模拟器上运行它时,第一行出现 NullPointerException

tabHost.addTab(spec);

所以我的问题当然是。导致此异常的示例有什么问题?我正在使用 Eclipse Galileo 并将目标包设置为 Android 1.5。到目前为止,我对 android 开发站点上的其他示例没有其他问题。

package com.example.hellotabwidget;

import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.TabHost;

public class HelloTabWidget extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) throws RuntimeException {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Reusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    //final Context context = getApplicationContext();
    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); //******** NullPointerException after running this line

    // Do the same for the other tabs
    intent = new Intent().setClass(this, AlbumsActivity.class);
    spec = tabHost.newTabSpec("albums").setIndicator("Albums",
            res.getDrawable(R.drawable.ic_tab_artists))
            .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, SongsActivity.class);
    spec = tabHost.newTabSpec("songs").setIndicator("Songs",
            res.getDrawable(R.drawable.ic_tab_artists))
            .setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTabByTag("artists");
}
}

主.xml:

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dp">
    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp" />
</LinearLayout>
</TabHost>

最佳答案

在你的 list 中试试这个:

<activity android:name=".AlbumsActivity"  android:label="@string/app_name"></activity> 
    <activity android:name=".ArtistsActivity"  android:label="@string/app_name"></activity> 
    <activity android:name=".SongsActivity"  android:label="@string/app_name"></activity> 

关于android - 运行 android HelloTabWidget 示例的问题 - addTab() 上的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2307389/

相关文章:

c# - 安卓进度条消失

安卓人工集成

android - 使用水平 ScrollView 的选项卡主机自动滚动 - 以编程方式

android - android输入数据时TabHost栏位于键盘上方

android - Android中使用Fragment时延迟初始化

android - GPS 安卓错误!

android - 如何在 android 的 Calendar VIew 上装饰或突出显示某些日期?

android - AlarmManager 并不总是执行 BroadcastReceiver

java - 如何添加另一个 Activity 作为登录屏幕android

android - 强制折叠 ActionBar 中的选项卡