2011-08-07 16 views
-2

所以我剛開始設置一個啓動屏幕,顯示5秒鐘,然後進入我的主菜單。我認爲我在過程中標記了錯誤,現在我的應用程序正在強制關閉。我很確定它是我的活動和清單的問題。遇到我的初始屏幕出現問題

DragonFruitActivity.java:

package com.Dragon_Fruit; 

import android.app.Activity; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.ImageButton; 

public class DragonFruitActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 
     Thread logoTimer = new Thread() { 
      public void run() { 
       try { 
        sleep(5000); 
        DragonFruitActivity.this.setContentView(R.layout.main); 

       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

       finally { 
        finish(); 
       } 
      } 
     }; 
     logoTimer.start(); 

     // ***BUTTON SOUND***// 
     final MediaPlayer buttonSound = MediaPlayer.create(
       DragonFruitActivity.this, R.raw.button_click); 

     ImageButton playbutton = (ImageButton) findViewById(R.id.playbutton); 
     playbutton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       arg0.setBackgroundResource(R.drawable.playbuttonselected); 
       // TODO Auto-generated method stub 
       buttonSound.start(); 
       startActivity(new Intent(DragonFruitActivity.this, 
         playbutton.class)); 
      } 

     }); 
     ImageButton settingsbutton = (ImageButton) findViewById(R.id.settingsbutton); 
     settingsbutton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       buttonSound.start(); 
       startActivity(new Intent(DragonFruitActivity.this, 
         settingsbutton.class)); 
      } 

     }); 
    } 
} 

火龍果清單:

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


    <application android:icon="@drawable/icon" 
       android:label="@string/app_name" 
       android:debuggable="true"> 

     <activity android:name=".DragonFruitActivity" 
        android:label="@string/app_name" 
        android:screenOrientation="landscape" 
        android:configChanges="keyboard|keyboardHidden|orientation"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity android:name=".playbutton" 
        android:label="@string/app_name" 
        android:screenOrientation="landscape" 
        android:configChanges="keyboard|keyboardHidden|orientation"> 
      <intent-filter> 
       <action android:name="com.Dragon_Fruit.PLAYBUTTON" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

     <activity android:name=".settingsbutton" 
        android:label="@string/app_name" 
        android:screenOrientation="landscape" 
        android:configChanges="keyboard|keyboardHidden|orientation"> 
      <intent-filter> 
       <action android:name="com.Dragon_Fruit.SETTINGSBUTTON" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

    </application> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="9" /> 
</manifest> 

的logcat:

08-06 22:46:27.942: ERROR/dalvikvm(9896): could not disable core file generation for pid 9896, errno=1 
08-06 22:46:28.271: ERROR/(5531): This file is not ASF file. 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896): FATAL EXCEPTION: main 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Dragon_Fruit/com.Dragon_Fruit.DragonFruitActivity}: java.lang.NullPointerException 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2737) 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2753) 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  at android.app.ActivityThread.access$2500(ActivityThread.java:129) 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2107) 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  at android.os.Looper.loop(Looper.java:143) 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  at android.app.ActivityThread.main(ActivityThread.java:4701) 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  at java.lang.reflect.Method.invoke(Method.java:521) 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  at dalvik.system.NativeStart.main(Native Method) 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896): Caused by: java.lang.NullPointerException 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  at com.Dragon_Fruit.DragonFruitActivity.onCreate(DragonFruitActivity.java:44) 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2701) 
08-06 22:46:28.364: ERROR/AndroidRuntime(9896):  ... 11 more 
+0

請添加logcat日誌。 – MByD

+0

你有一個關閉logcat輸出的力量? – Pikaling

+0

查看錯誤日誌可能有幫助... – BrainCrash

回答

1

在你的線程,嘗試改變:

Intent DragonFruitActivityIntent = new Intent("main"); 

到:

Intent DragonFruitActivityIntent = new Intent(DragonFruitActivity.this, NameOfActivityToStart.class); 

另外,如果你想改變佈局,而不是開始一個新的活動,刪除:

Intent DragonFruitActivityIntent = new Intent("main"); 
startActivity(DragonFruitActivityIntent); 

,而是寫:

DragonFruitActivity.this.setContentView(R.layout.main); 

順便說一句,這會更好,如果不是睡5秒,線程做了一些有用的工作,比如爲你的應用程序加載一些數據 - 否則它只是在放慢速度無故無法訪問您的應用。

編輯:嘗試從的onCreate移動所有的代碼()來調用onStart(),所以它是這樣的:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
     WindowManager.LayoutParams.FLAG_FULLSCREEN);   
    setContentView(R.layout.splash); 
} 

@Override 
public void onStart() { 
    super.onStart() 
    Thread logoTimer = new Thread() { 
    ... // the rest of your code here 
} 

您可能會遇到的問題訪問UI它完全形成之前。

+0

nope沒有運氣:(你檢查過我的清單嗎?那裏會有問題嗎? –

+0

我看過你的清單,我不這麼認爲,因爲錯誤是一個空指針異常。如果它是一個明顯的問題,它可能是其他的東西,我唯一看到你的清單錯誤的是你的'use-permission'和'uses-sdk'標籤應該在'application'標籤上面,而不是在它下面。我在清單中使用了很多我沒有用過的東西,所以我可能會錯過 – Pikaling

+0

hnmm ya這是以前從來沒有遇到過的問題,我不確定是什麼問題......但是感謝您的幫助無論如何, –

0

當你的日誌貓暗示..

at com.Dragon_Fruit.DragonFruitActivity.onCreate(DragonFruitActivity.java:44) 

有你DragonFruitActivity文件中的一些問題。在OnCreate回調內線44 ..

我想移除可以解決NullpointerException的問題。