Android意图总是崩溃

时间:2013-12-09 12:30:47

标签: java android android-intent crash android-activity

我正在尝试使用intent切换android中的活动。然而,不管我做什么,这总是崩溃。我在同一个问题上阅读了无数的主题,其中没有一个有帮助。所以我被迫提出自己的问题。

当我运行此功能时,应用程序会在4秒钟后崩溃

这是我的第一项活动(启动):

package com.redflamedeveloper.torch;

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;

public class Splash extends Activity {
    /** Called when the activity is first created. */

    MediaPlayer mpSplash;

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

        mpSplash = MediaPlayer.create(this, R.raw.fire);                    //Splash Screen sound
        mpSplash.start();

        Thread logoTimer = new Thread(){                                    //4 Second Timer
            public void run() {
                try {
                    //Waits for 4 seconds
                    int logoTimer = 0;
                    while(logoTimer <4000){
                        sleep(100);
                        logoTimer = logoTimer + 100;
                    }
                    Intent intentMain = new Intent(Splash.this, Main.class);
                    startActivity(intentMain);
                }
                catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                finally {
                    finish();
                }
            }

        };

        logoTimer.start();                                          //Starts the thread logoTimer
    }


    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        mpSplash.release();                                         //ends sound
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        mpSplash.pause();                                           //pauses sound
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        mpSplash.start();                                           //Resumes sound
    }
}

我的第二项活动(主要):

package com.redflamedeveloper.torch;

import android.app.Activity;
import android.hardware.Camera.Parameters;
import android.hardware.Camera;
import android.os.Bundle;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.os.Handler;

/**
 * Created by Sasha on 8/12/13.
 */
public class Main extends Activity implements OnClickListener{

    private Camera mCamera;

    boolean torch = false;
    boolean flash = false;

    private Handler mHander = new Handler();

    private final Runnable mRunnable = new Runnable() {

        public void run() {
            while(flash) {
                if (torch==false) {
                    if( mCamera != null ){
                        Parameters params = mCamera.getParameters();
                        params.setFlashMode( Parameters.FLASH_MODE_TORCH );
                        mCamera.setParameters( params );
                        torch=true;
                    }
                } else {
                    if( mCamera != null ){
                        Parameters params = mCamera.getParameters();
                        params.setFlashMode( Parameters.FLASH_MODE_OFF );
                        mCamera.setParameters( params );
                        torch=false;
                    }
                }
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.main);

        Button bTorch = (Button) findViewById(R.id.bTorch);
        Button bFlash  = (Button) findViewById(R.id.bFlash);
        Button bHelp = (Button) findViewById(R.id.bHelp);
        Button bMorse = (Button) findViewById(R.id.bMorse);

        bTorch.setOnClickListener(this);
        bFlash.setOnClickListener(this);
        bHelp.setOnClickListener(this);
        bMorse.setOnClickListener(this);
    }

    private void startStrobe() {
        mHander.post(mRunnable);
    }

    public void onClick(View v) {
        switch(v.getId()){
            case R.id.bTorch:
                if (torch==false) {
                    if( mCamera != null ){
                        Parameters params = mCamera.getParameters();
                        params.setFlashMode( Parameters.FLASH_MODE_TORCH );
                        mCamera.setParameters( params );
                        torch=true;
                    }
                } else {
                    if( mCamera != null ){
                        Parameters params = mCamera.getParameters();
                        params.setFlashMode( Parameters.FLASH_MODE_OFF );
                        mCamera.setParameters( params );
                        torch=false;
                    }
                }
            break;
            case R.id.bFlash:
                flash=!flash;
                startStrobe();
            break;
            case R.id.bHelp:
                Parameters params = mCamera.getParameters();
                params.setFlashMode( Parameters.FLASH_MODE_TORCH );
                mCamera.setParameters( params );

                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                params.setFlashMode( Parameters.FLASH_MODE_OFF );
                mCamera.setParameters( params );

                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                params.setFlashMode( Parameters.FLASH_MODE_TORCH );
                mCamera.setParameters( params );

                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                params.setFlashMode( Parameters.FLASH_MODE_OFF );
                mCamera.setParameters( params );

                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                params.setFlashMode( Parameters.FLASH_MODE_TORCH );
                mCamera.setParameters( params );

                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                params.setFlashMode( Parameters.FLASH_MODE_OFF );
                mCamera.setParameters( params );

                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                params.setFlashMode( Parameters.FLASH_MODE_TORCH );
                mCamera.setParameters( params );

                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                params.setFlashMode( Parameters.FLASH_MODE_OFF );
                mCamera.setParameters( params );

                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                params.setFlashMode( Parameters.FLASH_MODE_OFF );
                mCamera.setParameters( params );

                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            break;
            case R.id.bMorse:
                Intent intentMorse = new Intent(Main.this, Morse.class);
                Main.this.startActivity(intentMorse);
            break;
        }
    }
}

和我的清单:

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

    <uses-sdk
        android:minSdkVersion="13"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.redflamedeveloper.torch.Splash"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name=".Main"
            android:label="@string/app_name" >
        </activity>

        <activity
            android:name=".Morse"
            android:label="@string/app_name" >
        </activity>

    </application>

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" />

</manifest>

最后LogCat:

12-09 23:28:35.682    2110-2110/com.redflamedeveloper.torch W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x40c47a68)
12-09 23:28:35.692      637-674/? E/android.os.Debug﹕ !@Dumpstate > dumpstate -k -t -n -z -d -o /data/log/dumpstate_app_error
12-09 23:28:35.692    2110-2110/com.redflamedeveloper.torch E/AndroidRuntime﹕ FATAL EXCEPTION: main
    android.app.SuperNotCalledException: Activity {com.redflamedeveloper.torch/com.redflamedeveloper.torch.Main} did not call through to super.onCreate()
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1936)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
            at android.app.ActivityThread.access$600(ActivityThread.java:128)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4517)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
            at dalvik.system.NativeStart.main(Native Method)
12-09 23:28:35.692      637-647/? W/ActivityManager﹕ Force finishing activity com.redflamedeveloper.torch/.Main
12-09 23:28:35.702    2144-2144/? I/dumpstate﹕ Check if stand-alone
12-09 23:28:35.712    2144-2144/? I/dumpstate﹕ begin
12-09 23:28:36.523    1268-1281/? E/MP-Decision﹕ DOWN Ld:54 Ns:1.100000 Ts:190 rq:0.000000 seq:196.000000
12-09 23:28:37.023    637-25450/? W/SignalStrength﹕ getGsmLevel=4
12-09 23:28:37.023    637-25450/? W/SignalStrength﹕ getLevel=4 (SignalStrength: 14 0 -120 -160 -120 -1 -1 99 2147483647 2147483647 2147483647 2147483647 gsm|lte 0x4)
12-09 23:28:37.023      771-771/? W/SignalStrength﹕ getGsmLevel=4
12-09 23:28:37.023      771-771/? W/SignalStrength﹕ getLevel=4 (SignalStrength: 14 0 -120 -160 -120 -1 -1 99 2147483647 2147483647 2147483647 2147483647 gsm|lte 0x4)
12-09 23:28:37.023      771-771/? W/SignalStrength﹕ getGsmLevel=4
12-09 23:28:37.023      771-771/? W/SignalStrength﹕ getLevel=4 (SignalStrength: 14 0 -120 -160 -120 -1 -1 99 2147483647 2147483647 2147483647 2147483647 gsm|lte 0x4)
12-09 23:28:37.023      771-771/? D/STATUSBAR-NetworkController﹕ onSignalStrengthsChanged signalStrength=SignalStrength: 14 0 -120 -160 -120 -1 -1 99 2147483647 2147483647 2147483647 2147483647 gsm|lte 0x4 level=4
12-09 23:28:37.023      637-884/? W/AlarmManager﹕ FACTORY_ON= 0
12-09 23:28:37.774    1268-1281/? E/MP-Decision﹕ UP Ld:61 Nw:1.990000 Tw:140 rq:2.300000 seq:147.000000
12-09 23:28:38.164      329-329/? E/SMD﹕ DCD ON
12-09 23:28:38.665      336-582/? D/AudioStreamOutALSA﹕ standby
12-09 23:28:38.665      336-582/? D/ALSAModule﹕ s_standby: handle 0x10454c0 h 0x0
12-09 23:28:38.665      336-582/? E/ALSAModule﹕ s_standby handle h 0x10e2180
12-09 23:28:38.865      336-582/? D/alsa_ucm﹕ snd_use_case_set(): uc_mgr 0xfe8968 identifier _verb value Inactive
12-09 23:28:38.865      336-582/? D/alsa_ucm﹕ set_use_case_ident_for_all_devices(): HiFi
12-09 23:28:38.865      336-582/? D/alsa_ucm﹕ Set mixer controls for HiFi enable 0
12-09 23:28:38.865      336-582/? D/alsa_ucm﹕ Set mixer controls for HiFiSpeaker enable 0
12-09 23:28:38.865      336-582/? D/alsa_ucm﹕ snd_use_case_set(): uc_mgr 0xfe8968 identifier _disdev value Main Mic
12-09 23:28:38.865      336-582/? D/alsa_ucm﹕ disdev: device Main Mic not enabled or not active, no need to disable
12-09 23:28:38.865      336-582/? D/alsa_ucm﹕ snd_use_case_set(): uc_mgr 0xfe8968 identifier _disdev value Speaker
12-09 23:28:38.865      336-582/? E/alsa_ucm﹕ Empty list
12-09 23:28:38.865      336-582/? D/alsa_ucm﹕ set current output is none
12-09 23:28:38.865      336-582/? D/alsa_ucm﹕ Set mixer controls for Speaker enable 0
12-09 23:28:39.075    1268-1281/? E/MP-Decision﹕ DOWN Ld:18 Ns:1.100000 Ts:190 rq:0.000000 seq:196.000000
12-09 23:28:40.557      319-542/? D/VoldCmdListener﹕ asec list
12-09 23:28:40.557      319-542/? D/VoldCmdListener﹕ CommandListener::AsecCmd::runCommand -> --
12-09 23:28:40.707      637-698/? D/KeyguardViewMediator﹕ setHidden false
12-09 23:28:40.707      637-698/? D/KeyguardViewMediator﹕ setHidden false
12-09 23:28:40.707      637-698/? D/DEFERED_APP_VISIBILITY﹕ tweaking closing app
12-09 23:28:40.707      637-698/? D/DEFERED_APP_VISIBILITY﹕ tweaking closing app
12-09 23:28:40.717      637-698/? D/KeyguardViewMediator﹕ setHidden false
12-09 23:28:40.737      637-698/? D/KeyguardViewMediator﹕ setHidden false
12-09 23:28:40.747      637-698/? D/KeyguardViewMediator﹕ setHidden false

我在我的智慧结束。非常感谢所有帮助

萨莎

2 个答案:

答案 0 :(得分:5)

您需要使用super.onCreate(savedInstanceState);的{​​{1}}方法拨打onCreate

答案 1 :(得分:1)

您的第二个活动不会调用super.onCreate(savedInstanceState)。它在logcat

中这么说