Android活动类提供NullPointerException

时间:2017-01-18 08:51:03

标签: java android android-activity nullpointerexception

我的问题是我的应用中的某个特定活动由于某种原因无法启动,它会抛出:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference

看起来像这样的所有其他启动代码工作正常,问题仅在我启动Player1时。这门课确实存在,我无法理解这是什么问题。

我正在从名为Player1的活动中启动名为ChooseLevel的活动。按下某个按钮时,呼叫为:

Intent intent = new Intent(ChooseLevel.this, Player1.class);
Bundle b = new Bundle();
b.putInt("game_level", 1);
intent.putExtras(b);
startActivity(intent);
finish();

日志显示错误位于:Player1.onCreate(Player1.java:50)

Player1:50行中的代码是:

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

    changeIndex = 0;
    cards = new ArrayList<Card>(8);
    score = (TextView) findViewById(R.id.score_text);
    message = (TextView) findViewById(R.id.msg_text);
    timer = (TextView) findViewById(R.id.timer);
    timer.setText(String.valueOf(definitions.TIMER_START)); # LINE 50

    Bundle b = getIntent().getExtras();

    ... 
}

当这个启动代码运行时,我会在我的日志中找到它:

33:04.338 18302-18302/com... D/AndroidRuntime: Shutting down VM
01-18 10:33:04.338 18302-18302/com... E/AndroidRuntime: FATAL EXCEPTION: main
           Process: com..., PID: 18302
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.../com....Player1}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
        at com....Player1.onCreate(Player1.java:50)




编辑:

我找到了答案,它与我在Player1.onCreate()方法中使用的某个对象有关。以一种奇怪的方式,android-studio提出了关于getClass()的例外。 如果有人知道为什么会发生这种情况,请分享:)

1 个答案:

答案 0 :(得分:0)

使用context,getApplicationContext()or getActivity()`

Intent intent = new Intent(context, Player1.class);
Bundle b = new Bundle();
b.putInt("game_level", 1);
intent.putExtras(b);
startActivity(intent);
finish();