为什么这会崩溃?我如何调试?

时间:2011-08-15 18:50:58

标签: java android android-tabhost

我过去总是使用Xcode所以现在我正在尝试学习Android而我正在使用Eclipse

我按照http://developer.android.com/resources/tutorials/views/hello-tabwidget.html中列出的所有步骤进行了操作,但当我实际运行LG Revolution(Froyo 2.2.1)上的代码时,我崩溃了。

我不确定如何调试,但我不知道为什么会崩溃。任何帮助将不胜感激。

我为所有3个标签使用了相同的图像(这是我做的唯一修改,但我认为它不应该崩溃)

这是我的代码

package com.oneorangetree.shit;

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

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

        // Resource object to get drawable
        Resources res = getResources();
        TabHost tabHost = getTabHost();
        TabHost.TabSpec spec;
        Intent intent;

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

        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.setCurrentTab(2);
    }
}

这是我的清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.oneorangetree.shit"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".HelloTabWidgetActivity"
                  android:label="@string/app_name"
                  android:theme="@android:style/Theme.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

2 个答案:

答案 0 :(得分:1)

狂野猜测:您是否已将所有活动添加到清单中?一项活动等于清单中的一项提及。

创建项目时,默认情况下会将主要活动添加到此文件中,以便系统知道可以启动主要活动。现在,每次在项目中添加新活动时,都必须在清单中添加此活动:

<activity android:name=".HelloTabWidget" android:label="@string/app_name"
      android:theme="@android:style/Theme.NoTitleBar">

如果不是通过单击文件的左边距添加一些断点,则单击调试按钮。最后,打开调试透视图,然后使用F8在断点之间导航。

希望它有所帮助,也在那里:)。

答案 1 :(得分:1)

查看http://code.google.com/p/android/issues/detail?id=4183中的信息,并在原始问题中按Ted实施修正 - 以下是清单,但也有其他错误:

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