我的应用程序在我的主要活动中有3个选项(按钮),媒体播放器在应用程序启动时播放歌曲。启动应用程序时,媒体播放器会正确启动,但是如果我在音频仍在播放时按按钮开始新的活动,则应用程序崩溃(不幸的是,应用程序已停止)。
如果我在消息中按“确定”,则它将打开新活动,媒体播放器停止。

我的目的是开始新活动并停止媒体播放器(歌曲)。

有人可以帮我解决这些问题吗?

TextView  logoname;
Button autismlogo,visionlogo,hearinglogo;
private SensorManager mSensorManager;
private ShakeEventListener mSensorListener;
MediaPlayer player;


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


logoname = (TextView)findViewById(R.id.logotext);
autismlogo = (Button)findViewById(R.id.autismbutton);
visionlogo = (Button)findViewById(R.id.visionbutton);
hearinglogo = (Button)findViewById(R.id.hearingbutton);



final MediaPlayer player = MediaPlayer.create(MainActivity.this, R.raw.welcome);
player.start();

// ---SENSORS--------

mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensorListener = new ShakeEventListener();

mSensorListener.setOnShakeListener(new ShakeEventListener.OnShakeListener() {
  public void onShake() {
      Intent vision = new Intent(getApplicationContext(),Vision_main.class);
    startActivity(vision);
  }
});


// ----ON CLICK EVENTS -----------
autismlogo.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {


        Intent autism = new Intent(getApplicationContext(),Autism_main.class);
        startActivity(autism);

    }

});

visionlogo.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {



        Intent vision = new Intent(getApplicationContext(),Vision_main.class);
        startActivity(vision);

    }
});

hearinglogo.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {

        Intent hearing = new Intent(getApplicationContext(),Hearing_main.class);
        startActivity(hearing);
    }
});

}

public void onResume() {
    super.onResume();

    mSensorManager.registerListener(mSensorListener,
            mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
            SensorManager.SENSOR_DELAY_UI);
}

public void onPause() {
    super.onPause();
    player.stop();
    mSensorManager.unregisterListener(mSensorListener);
}


记录猫错误


  
    E / AndroidRuntime(27610):致命异常:主要
    E / AndroidRuntime(27610):进程:com.giorgospapadopoulos.move4all,PID:27610
    E / AndroidRuntime(27610):java.lang.RuntimeException:无法暂停活动{com.giorgospapadopoulos.move4all / com.giorgospapadopoulos.move4all.MainActivity}:java.lang.NullPointerException:尝试调用虚拟方法'void android.media。 MediaPlayer.stop()'对空对象的引用
    E / AndroidRuntime(27610):位于android.app.ActivityThread.performPauseActivity(ActivityThread.java:3260)
    E / AndroidRuntime(27610):位于android.app.ActivityThread.performPauseActivity(ActivityThread.java:3219)
    E / AndroidRuntime(27610):位于android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3194)
    E / AndroidRuntime(27610):位于android.app.ActivityThread.access $ 1000(ActivityThread.java:151)
    E / AndroidRuntime(27610):位于android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1314)
    E / AndroidRuntime(27610):位于android.os.Handler.dispatchMessage(Handler.java:102)
    E / AndroidRuntime(27610):位于android.os.Looper.loop(Looper.java:135)
    E / AndroidRuntime(27610):位于android.app.ActivityThread.main(ActivityThread.java:5254)
    E / AndroidRuntime(27610):位于java.lang.reflect.Method.invoke(本机方法)
    E / AndroidRuntime(27610):位于java.lang.reflect.Method.invoke(Method.java:372)
    E / AndroidRuntime(27610):位于com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903)
    E / AndroidRuntime(27610):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
    E / AndroidRuntime(27610):原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void android.media.MediaPlayer.stop()'
    E / AndroidRuntime(27610):位于com.giorgospapadopoulos.move4all.MainActivity.onPause(MainActivity.java:220)
    E / AndroidRuntime(27610):位于android.app.Activity.performPause(Activity.java:6101)
    E / AndroidRuntime(27610):位于android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1310)
    E / AndroidRuntime(27610):位于android.app.ActivityThread.performPauseActivity(ActivityThread.java:3246)
    E / AndroidRuntime(27610):...还有11个

最佳答案

您的错误很清楚。您在NullPointerException方法的第120行中得到一个onPause()。那是因为您还没有创建player对象,而是尝试调用它的方法之一。

您已将其声明为全局变量,但尚未创建。您可以在player方法内创建另一个onCreate()对象,但这只是一个局部变量。

10-04 18:28