【问题标题】:NullPointerException (GameActivity does not open)NullPointerException(GameActivity 未打开)
【发布时间】:2016-10-26 09:06:02
【问题描述】:

请在这里检查我的代码有什么问题:

主要活动:

我正在使用 Android Studio。导入语句是为我管理的。没必要在这里写

public class MainActivity extends Activity implements View.OnClickListener {

SharedPreferences prefs;
String dataName = "MyData";
String intName = "MyString";
int defaultInt = 0;
public static int highScore;

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

    Button buttonPlay = (Button) findViewById(R.id.btnPlay);
    TextView textHighScore = (TextView) findViewById(R.id.textHighScore);

    buttonPlay.setOnClickListener(this);
    prefs = getSharedPreferences(dataName, MODE_PRIVATE);
    highScore = prefs.getInt(intName, defaultInt);
    textHighScore.setText("High Score: " + highScore);
}

@Override
public void onClick(View view) {
    Intent intent;
    intent = new Intent(this, GameActivity.class);
    startActivity(intent);
}
}

当我运行此应用程序时,主 Activity 已加载,但当我点击播放按钮时,应用程序关闭。我检查了播放按钮的 ID 是否正常。我在GameActivity 中遇到了同样的问题,但最后我发现问题出在 ID 上,但这次我认为问题出在我在Intent(); 中使用的this 上。 Activity 加载失败。

例外:

06-24 01:34:05.196 12826-12826/com.cruzerblade.memorygame E/AndroidRuntime: FATAL EXCEPTION: main
                                                                        Process: com.cruzerblade.memorygame, PID: 12826
                                                                        java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.cruzerblade.memorygame/com.cruzerblade.memorygame.GameActivity}: 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:2327)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                            at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                            at android.os.Looper.loop(Looper.java:148)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                         Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
                                                                            at android.content.ContextWrapper.getResources(ContextWrapper.java:87)
                                                                            at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:81)
                                                                            at android.view.animation.AnimationUtils.loadAnimation(AnimationUtils.java:75)
                                                                            at com.cruzerblade.memorygame.GameActivity.<init>(GameActivity.java:55)
                                                                            at java.lang.Class.newInstance(Native Method)
                                                                            at android.app.Instrumentation.newActivity(Instrumentation.java:1067)
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                            at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                            at android.os.Looper.loop(Looper.java:148) 
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                            at java.lang.reflect.Method.invoke(Native Method) 
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

请帮帮我!花了我太多时间,我还是无法弄清楚问题所在。

【问题讨论】:

    标签: java android android-studio android-activity nullpointerexception


    【解决方案1】:

    引用你的 logcat:

    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 
       'android.content.res.Resources android.content.Context.getResources()'
        on a null object reference
        at android.content.ContextWrapper.getResources(ContextWrapper.java:87)
        at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:81)
        at android.view.animation.AnimationUtils.loadAnimation(AnimationUtils.java:75)
       at com.cruzerblade.memorygame.GameActivity.<init>(GameActivity.java:55)
    

    最后一行是跟踪中唯一的代码行:

    查看 GameActivity.java 的第 55 行。它正在调用 loadAnimation。它尝试加载的动画有问题(可能缺少资源 ID,但它也可能是 loadAnimation 的 null 或无效的上下文参数。)

    【讨论】:

    • 我终于想通了。但还是谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2020-02-29
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    相关资源
    最近更新 更多