Java 无错误构建,但在android studio中单击音乐播放器时崩溃

Java 无错误构建,但在android studio中单击音乐播放器时崩溃,java,android,Java,Android,我是编程新手,被指派编写一个简单的音乐播放器的代码,有一些幻灯片可以帮助指导,我对它们做了一些修改(不能使用完全相同的变量) 所以现在它是无错误的,但当我点击播放按钮时,它崩溃了,不知道为什么。以下是我选择库所在页面的代码: package sg.edu.tp.project1; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; im

我是编程新手,被指派编写一个简单的音乐播放器的代码,有一些幻灯片可以帮助指导,我对它们做了一些修改(不能使用完全相同的变量)

所以现在它是无错误的,但当我点击播放按钮时,它崩溃了,不知道为什么。以下是我选择库所在页面的代码:

package sg.edu.tp.project1;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;


import sg.edu.tp.project1.util.AppUtil;

public class myMusic extends AppCompatActivity {
private String[] Musicsong = new String[6];






    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_music);
    //store values in array of the first song
    Musicsong[0] = "s1001";
    Musicsong[1] = "The Way You Look Tonight";
    Musicsong[2] = "ed sheeran";
    Musicsong[3] = "a5b8972e764025020625bbf9c1c2bbb06e394a60?cid=null";
    Musicsong[4] = "4.39";
    Musicsong[5] = "music to play";


}
public void sendDataToActiviy(String[] song)
{
    //1.create intent and specify destination
    Intent intent = new Intent(this, PlayMusicActivity.class);

    //2.store song info in intent to send to destination
    intent.putExtra("id", song[0]);
    intent.putExtra("title",song[1]);
    intent.putExtra("artist",song[2]);
    intent.putExtra("fileLink",song[3]);
    intent.putExtra("coverArt",song[5]);

    //3. launch desntination activiy
    startActivity(intent);


}
public void handleSelection(View view)
{

    // 1. get id of selected song
    String resourceId = AppUtil.getResourceId(this, view);

    //2. Search for the selected song based on the ID so that
    // all infomation of the song can be retreived

    String[] selectedSong =searchById(resourceId);
    //3.popup to show tittle of song
    AppUtil.popMessage(this, "Streaming song:" + selectedSong[1]);

    //4. send song data to player screen
    sendDataToActiviy(selectedSong);
}
private Object[] songs = {Musicsong};
public String[] searchById(String id) {
    //temporary empty array
    String[] song = null;
    //for loop to get song
    for (int index = 0; index < songs.length; index++) {
        //3. store each song item to song array.
        song = (String[]) songs[index];

        //4. match song id to see if its the one i want
        if (song[0].equals(id)) {
            return song;

        }

    }
    //if song not found in array empty array will be returned
    return song;
}

}
日志:

崩溃开始:

08-10 16:04:29.696 2567-2567/sg.edu.tp.project1 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                  Process: sg.edu.tp.project1, PID: 2567
                                                                  java.lang.IllegalStateException: Could not execute method for android:onClick
                                                                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                                                                      at android.view.View.performClick(View.java:5637)
                                                                      at android.view.View$PerformClick.run(View.java:22429)
                                                                      at android.os.Handler.handleCallback(Handler.java:751)
                                                                      at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                      at android.os.Looper.loop(Looper.java:154)
                                                                      at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
                                                                   Caused by: java.lang.reflect.InvocationTargetException
                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                                                                      at android.view.View.performClick(View.java:5637) 
                                                                      at android.view.View$PerformClick.run(View.java:22429) 
                                                                      at android.os.Handler.handleCallback(Handler.java:751) 
                                                                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                      at android.os.Looper.loop(Looper.java:154) 
                                                                      at android.app.ActivityThread.main(ActivityThread.java:6119) 
                                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
                                                                   Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.start()' on a null object reference
                                                                      at sg.edu.tp.project1.PlayMusicActivity.playOrPauseMusic(PlayMusicActivity.java:106)
                                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                                                                      at android.view.View.performClick(View.java:5637) 
                                                                      at android.view.View$PerformClick.run(View.java:22429) 
                                                                      at android.os.Handler.handleCallback(Handler.java:751) 
                                                                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                      at android.os.Looper.loop(Looper.java:154) 
                                                                      at android.app.ActivityThread.main(ActivityThread.java:6119) 
                                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

例外信息非常清楚:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.start()' on a null object reference 
    at sg.edu.tp.project1.PlayMusicActivity.playOrPauseMusic(PlayMusicActivity.java:106)

因此,您的
player
字段是
null
,因为您以前从未调用过
PlayMusicActivity
preparePlayer()

查看logcat。你会有一个完整的崩溃日志。就像@litite所说的,查看你的错误日志并发布it@litelite只是did@MatthewHoneydew你能发布崩溃日志吗?是的,刚刚发布了@LiteLitehahahahahahahahahah,那么我到底需要更改什么呢?很抱歉,我对此仍然很陌生。您必须在单击之前调用
preparePlayer()
方法,例如在
onCreate(…)
中。酷!如果没有问题,请接受答案。
08-10 16:04:29.696 2567-2567/sg.edu.tp.project1 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                  Process: sg.edu.tp.project1, PID: 2567
                                                                  java.lang.IllegalStateException: Could not execute method for android:onClick
                                                                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                                                                      at android.view.View.performClick(View.java:5637)
                                                                      at android.view.View$PerformClick.run(View.java:22429)
                                                                      at android.os.Handler.handleCallback(Handler.java:751)
                                                                      at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                      at android.os.Looper.loop(Looper.java:154)
                                                                      at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
                                                                   Caused by: java.lang.reflect.InvocationTargetException
                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                                                                      at android.view.View.performClick(View.java:5637) 
                                                                      at android.view.View$PerformClick.run(View.java:22429) 
                                                                      at android.os.Handler.handleCallback(Handler.java:751) 
                                                                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                      at android.os.Looper.loop(Looper.java:154) 
                                                                      at android.app.ActivityThread.main(ActivityThread.java:6119) 
                                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
                                                                   Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.start()' on a null object reference
                                                                      at sg.edu.tp.project1.PlayMusicActivity.playOrPauseMusic(PlayMusicActivity.java:106)
                                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                                                                      at android.view.View.performClick(View.java:5637) 
                                                                      at android.view.View$PerformClick.run(View.java:22429) 
                                                                      at android.os.Handler.handleCallback(Handler.java:751) 
                                                                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                      at android.os.Looper.loop(Looper.java:154) 
                                                                      at android.app.ActivityThread.main(ActivityThread.java:6119) 
                                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.start()' on a null object reference 
    at sg.edu.tp.project1.PlayMusicActivity.playOrPauseMusic(PlayMusicActivity.java:106)