NULLオブジェクト参照に意図結果を整数を渡します

キュウリ:

私は別のアクティビティに整数値を渡す方法では、新たな意図をceatingています。しかし、私は、受信側のヌルオブジェクトリファレンス/ NULLポインタ例外を取得します。これは、(昆虫は整数IDを持つカスタムタイプである)を呼び出す方法であります

private void openInsectDetails(Insect insect){
        Intent intent = new Intent(InsectCatchable.this, InsectDetails.class);
        intent.putExtra("InsectDetails", insect.getId());
        InsectCatchable.this.startActivity(intent);
    }

これは、受信クラスです。

package com.ac_companion.wegner;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

import java.util.ArrayList;

public class InsectDetails extends AppCompatActivity {
    private final String TAG = "InsectDetails";
    private int insectPositionMarker;
    private Insect localInsect;
    public int insectId;
    //private Intent mIntent = new Intent();

    public InsectDetails(){
        Intent mIntent = getIntent();
        insectId = mIntent.getIntExtra("InsectDetails", 0);
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_insect_details);
        localInsect = Util.getGlobalInsectList().get(insectId);
    }

}

これは例外です。

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.ac_companion.wegner, PID: 16344
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.ac_companion.wegner/com.ac_companion.wegner.InsectDetails}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Intent.getIntExtra(java.lang.String, int)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2548)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6077)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Intent.getIntExtra(java.lang.String, int)' on a null object reference
        at com.ac_companion.wegner.InsectDetails.<init>(InsectDetails.java:20)
        at java.lang.Class.newInstance(Native Method)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1078)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2538)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 
        at android.app.ActivityThread.-wrap12(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6077) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) 

なぜあるmIntent.getIntExtraAのヌルオブジェクトは?私のunterstandingに、その適切に初期化。

スタニスラフBatura:

私はそれが理由の活動のライフサイクルのだと思います。あなたは活動にコンストラクタを使用しないでください。ただ、中にあなたのコードを移動@OnCreateMethodeの

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

    Intent mIntent = getIntent();
    insectId = mIntent.getIntExtra("InsectDetails", 0);
    localInsect = Util.getGlobalInsectList().get(insectId);
}

アクティビティが作成される前に、意図取得しようとしているので、あなたは、例外を取得します。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=404320&siteId=1