Почему это сбой? И как мне отлаживать?

Я всегда использовал Xcode в прошлом, поэтому теперь я пытаюсь изучить Android и использую Eclipse.

Я выполнил все шаги, описанные в http://developer.android.com/resources/tutorials/views/hello-tabwidget.html, но когда я на самом деле запускаю код на своем LG Revolution (Froyo 2.2.1), у меня происходит сбой.

Я не уверен, как отлаживать, но я не знаю, почему это вообще может рухнуть. Любая помощь будет оценена по достоинству.

Я использовал одно и то же изображение для всех трех вкладок (это единственная модификация, которую я сделал, но я не думаю, что она должна вылететь)

Вот мой код

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>

person Cocoa Dev    schedule 15.08.2011    source источник
comment
Я могу гарантировать, что вы не получите ответов, пока не опубликуете код.   -  person Peaches491    schedule 15.08.2011
comment
Лучший способ найти сбой — проверить LogCat. Это в основном системный журнал Android. Вы можете найти его либо в приложении ddms в папке SDK/tools, либо в eclipse через Window->Add view->other->LogCat. Там должно быть исключение (напечатано красным с тегом AndroidRuntime). После того, как вы его получите, опубликуйте его и добавьте соответствующий фрагмент кода, пожалуйста.   -  person    schedule 15.08.2011
comment
Ответы на мой вопрос ответят на это для вас stackoverflow.com /вопросы/2209406/   -  person KevinDTimm    schedule 15.08.2011
comment
IOW, пример неполный - найдите ответ, описывающий, как его заполнить, и все будет готово.   -  person KevinDTimm    schedule 15.08.2011
comment
@KevinDTimm - возможно, ты прав. Можете ли вы опубликовать свой файл манифеста в качестве ответа, чтобы я мог принять его и дать вам кредит?   -  person Cocoa Dev    schedule 15.08.2011
comment
@Cocoa - см. ниже (но не голосуйте и не принимайте, просто следуйте инструкциям, данным в ответе Ted в моем исходном запросе   -  person KevinDTimm    schedule 15.08.2011


Ответы (2)


См. информацию на 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>
person KevinDTimm    schedule 15.08.2011

Дикая догадка: вы добавили все свои действия в манифест? Одно действие равно одному упоминанию в манифесте.

Когда вы создаете проект, ваше основное действие по умолчанию добавляется в этот файл, чтобы система знала, можно ли запускать ваше основное действие. Теперь каждый раз, когда вы добавляете новое действие в свой проект, вам нужно добавить это действие в манифест:

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

Если это не так, вы добавляете несколько точек останова, щелкнув левое поле вашего файла, затем нажмите кнопку отладки. Наконец, вы открываете перспективу отладки и перемещаетесь между точками останова с помощью F8.

Надеюсь, это поможет, я тоже был там :).

person mthpvg    schedule 15.08.2011