gpt4 book ai didi

java - 为什么 MediaPlayer.create 在类的开头初始化时会抛出 NullPointer 异常,而在 OnCreate 方法中初始化时不会抛出 NullPointer 异常?

转载 作者:行者123 更新时间:2023-12-02 00:51:37 24 4
gpt4 key购买 nike

当在类的开头使用上下文和资源初始化 MediaPlayer 对象时,它会抛出 NullPointer 异常,但是当在类的开头声明它时(因此它是 null),然后以相同的方式初始化它在onCreate方法中,它起作用了。对于其他对象(例如 View ),这种情况也发生在我身上,我无法理解为什么,因为它是以相同的方式初始化的。

public class MainActivity extends AppCompatActivity {

//Commented code is how it is written to run without problems

// private MediaPlayer player;

private MediaPlayer player = MediaPlayer.create(this, R.raw.test); //Throws NullPointer Exception

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// player = MediaPlayer.create(this, R.raw.test);

setContentView(R.layout.activity_main);
}
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.android.musicplayer, PID: 17008
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.android.musicplayer/com.example.android.musicplayer.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3066

最佳答案

欢迎来到 Stackoverflow。

由于错误发生,create 方法需要上下文。此上下文仅在 Activity 的 onCreate 方法上创建。也就是说,当您创建变量时,没有上下文,因为 onCreate 尚未发生。

进行以下更改:

public class MainActivity extends AppCompatActivity {

//Commented code is how it is written to run without problems

// private MediaPlayer player;

private MediaPlayer player; //Remove the MediaPlayer.create from here

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// player = MediaPlayer.create(this, R.raw.test);

setContentView(R.layout.activity_main);

player = MediaPlayer.create(this, R.raw.test); //and put it here

}

关于java - 为什么 MediaPlayer.create 在类的开头初始化时会抛出 NullPointer 异常,而在 OnCreate 方法中初始化时不会抛出 NullPointer 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57852857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com