2012-05-13 66 views
1

任何人都可以引導我,我試圖創建一個簡單的應用程序,它具有飛濺和主菜單活動。Android Manifest顯示主菜單

我已經實現了這兩個活動,每當我運行模擬器時,我都能看到彈出窗口彈出,但它永遠不會進入主菜單活動。

我試圖改變在清單中的XML文件,如下:

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

    <uses-sdk android:minSdkVersion="7" /> 
    <application android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" android:name=".activity.StartApp"> 
<activity 
     android:name=".activity.MainMenuApp" 
     android:label="@string/app_name"> 

    </activity> 

     <activity android:name=".activity.SplashApp" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

任何人都可以說明爲什麼在主菜單中並沒有露面?

謝謝。

編輯:SplashApp.java

import com.book.R; 
public class SplashApp extends Activity { 

private DBAdapter mDBAdapter; 

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

@Override 
protected void onStart() { 

    super.onStart(); 
    mDBAdapter = new DBAdapter(getApplicationContext()); 

    try{ 

... 
….  int sec = 1; 
     new Handler().postDelayed(new Runnable(){ 
      public void run(){ 
       Intent intent = new Intent(SplashApp.this, MainMenuApp.class); 
       startActivity(intent); 

       finish(); 
      } 
     }, sec * 1000); 
    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 
} 

我發現,問題可能是在我的清單文件,它說:

package="com.book" 

我現在能夠加載飛濺活動,但它不會去主菜單頁面?

+2

能否請您分享'SplashApp'活動的代碼呢?如果您引用它的「主菜單」也是一個活動,它也應該在這個清單中聲明。 – rekaszeru

回答

0

如果您主菜單活動實際上是一個Activity,還應該在androidManifest.xml文件指出(有或無的意圖過濾器):

... 
<activity android:name=".activity.MainMenu" 
    android:label="@string/main_menu"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 
... 

如果您正在執行初始化任務在SplashApp活動和應用程序的主要功能駐留在MainActivity中,但您會發現DEFAULT意圖過濾器很有用。

EDIT1:請從application標籤android:name屬性在清單

EDIT2:使用SplashApp.this.finish()而不是簡單地finish(),因爲這參照處理程序。

SplashApp.java:

package com.book.activity; 

import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.os.Handler; 
import com.book.R; 

public class SplashApp extends Activity 
{ 
    private DBAdapter mDBAdapter; 

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

    @Override 
    protected void onStart() 
    { 
     super.onStart(); 
     mDBAdapter = new DBAdapter(getApplicationContext()); 
     try 
     { 
      ArrayList<BookBean> books = mDBAdapter.getAllBooks(); 
      if (books == null) 
      { 
       InputStream instream = getAssets().open("bookdata.txt"); 
       BufferedReader bf = new BufferedReader(new InputStreamReader(instream)); 
       String line; 
       while ((line = bf.readLine()) != null) 
       { 
        String arr[] = line.split("***"); 
        for (int i = 0; i < arr.length; i++) 
        { 
         String temp[] = arr[i].split("*"); 
         BookBean book = new BookBean(); 

         book.setDescription((temp[0])); 
         book.setName(temp[1]); 
         book.setYearPublished(temp[2]); 
         mDBAdapter.insertBook(book); 
        } 
       } 
      } 
      final int sec = 1; 
      new Handler().postDelayed(new Runnable() 
      { 
       public void run() 
       { 
        Intent intent = new Intent(SplashApp.this, MainMenuApp.class); 
        startActivity(intent); 
        SplashApp.this.finish(); 
       } 
      }, sec * 1000); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.book" android:versionCode="1" 
    android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="7" /> 
    <application android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name"> 
     <activity android:name=".activity.MainMenuApp" 
      android:label="@string/app_name" /> 
     <activity android:name=".activity.SplashApp" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 
+0

我已經如上所示更改了清單,但我仍然收到「強制關閉」錯誤。 – Kitaro

+0

logcat部分也會有用;上面的代碼工作正常(佈局/生命週期部分),所以問題必須是從數據庫檢索數據/填充列表。請粘貼例外的日誌輸出。謝謝! – rekaszeru

+0

我不知道在哪裏可以找到日誌輸出,但在logcat上我看到例如: _E/AndroidRuntime(579)。由加載器dalvik.system中的java.lang.ClassNotFoundExceptino:com.book.activity.activity.StartApp引起。PathClassLoader_ – Kitaro