2012-04-10 88 views
0

我最近開始了Android開發,並且我已經知道Java。所以我在關於如何創建一個選項卡式佈局的Android開發網站上的 This教程。 即使我在教程和eclipse中的所有內容後都提示沒有錯誤,但是當我在froyo API 8級仿真器上運行應用程序時,應用程序崩潰。我的應用程序是建立以及對API級別8Android選項卡式佈局/視圖崩潰

什麼,我認爲可能會導致它: 1)我似乎已經在AndroidManifest.xml一條警告信息,我不明白,它強調了這一行:

<uses-sdk android:minSdkVersion="8" /> 

2)在教程中,他們使用5個選項卡創建了一個包含3個選項卡的頁面。也許這就是它??]

我的代碼:

主要活動:

package ent.com; 


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

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

    Resources res = getResources(); 
    TabHost tabHost = getTabHost(); 
    TabHost.TabSpec spec; 
    Intent intent; 

    // Create an Intent to launch an Activity for the tab (to be reused) 
    intent = new Intent().setClass(this, Players.class); 

    // Initialize a TabSpec for each tab and add it to the TabHost 
    spec = tabHost.newTabSpec("players").setIndicator("Players", 
         res.getDrawable(R.drawable.ic_tab_players)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

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

    intent = new Intent().setClass(this, League.class); 
    spec = tabHost.newTabSpec("league").setIndicator("League", 
         res.getDrawable(R.drawable.ic_tab_league)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent().setClass(this, Finance.class); 
    spec = tabHost.newTabSpec("finance").setIndicator("Finance", 
         res.getDrawable(R.drawable.ic_tab_finance)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent().setClass(this, Next.class); 
    spec = tabHost.newTabSpec("next").setIndicator("Next Game", 
         res.getDrawable(R.drawable.ic_tab_next)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

    tabHost.setCurrentTab(2); 
} 
} 

我的AndroidManifest.xml:

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

<uses-sdk android:minSdkVersion="8" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".TestActivity" 
     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> 

感謝您的幫助!

+0

添加堆棧跟蹤,請 – 2012-04-10 14:39:03

回答

2

您需要在清單中提及其他所有活動。

<activity android:name=".Players" 
</activity> 
<activity android:name=".Staff" 
</activity> 
<activity android:name=".League" 
</activity> 
<activity android:name=".Finance" 
</activity> 
<activity android:name=".Next" 
</activity>  

清單中未聲明的活動會導致應用程序崩潰。

0

使用的一些日誌,看看怎麼回事錯

import android.util.Log; 

private static final String TAG = MainGame.class.getSimpleName(); 

intent = new Intent().setClass(this, Finance.class); 
spec = tabHost.newTabSpec("next").setIndicator("Next Game", 
        res.getDrawable(R.drawable.ic_tab_next)) 
       .setContent(intent); 
     Log.d(TAG, "Finance Created!!!!"); 
tabHost.addTab(spec); 
+0

看到所有的日誌,你定義得到標籤「的logcat」在logcat的 – 2012-04-10 14:45:42

+0

它也將記錄錯誤,該手機確實當手機確實需要強制clse時,會發布日誌爲什麼 – 2012-04-10 14:47:03