Search code examples
arraylistandroid-intentbundle

I am getting error while trying to pass an arraylist through bundle


I am getting error while trying to pass an array list through bundle please help

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sandyzfeaklab.Breakdown_app/com.sandyzfeaklab.breakdown_app.Data_input}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.Serializable android.os.Bundle.getSerializable(java.lang.String)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7656) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.Serializable android.os.Bundle.getSerializable(java.lang.String)' on a null object reference at com.sandyzfeaklab.breakdown_app.Data_input.onCreate(Data_input.java:61)

below is my bundle reciving activity

public class Data_input extends AppCompatActivity {

    String Part = "Part Name", problem_desc = "Problem", action_taken = "Action Taken", spares_used = "Spares Used", sap_no = "Sap No", operation = "Operation", end_time = "End Time", Action_taken_by = "Action taken by ", start_time = "Start Time";

    TextView starttime, endtime, time_taken;

    ArrayList<Sap_code_Model> models = new ArrayList<>();

    private static final int SECOND_ACTIVITY_REQUEST_CODE = 0;



    @RequiresApi(api = Build.VERSION_CODES.O)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.content_data_input);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FirebaseFirestore db = FirebaseFirestore.getInstance();

        EditText part_name, problem_desc_et, action_taken_et, spares_used_et, sap_no_et;

        Bundle bundle= getIntent().getExtras();
        models= (ArrayList<Sap_code_Model>) bundle.getSerializable("Codes");

        Toast.makeText(this, models.size(), Toast.LENGTH_SHORT).show(); 

Thi is my model class

public class Sap_code_Model implements Serializable {

private long sap_code;
private String sap_description;
private int sap_qty;

public Sap_code_Model() {
}



public long getSap_code() {
    return sap_code;
}

public Sap_code_Model setSap_code(long sap_code) {
    this.sap_code = sap_code;
    return this;
}

public String getSap_description() {
    return sap_description;
}

public Sap_code_Model setSap_description(String sap_description) {
    this.sap_description = sap_description;
    return this;
}

public int getSap_qty() {
    return sap_qty;
}

public Sap_code_Model setSap_qty(int sap_qty) {
    this.sap_qty = sap_qty;
    return this;
}

}

Data sending Activity here i am trying to send the arraylist

mDataBinding.fabSave.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Add_Sap_codes.this, Data_input.class);
                    Bundle bundle= new Bundle();
                    bundle.putSerializable("Codes",data);
                    intent.putExtras(bundle);
                    setResult(RESULT_OK, intent);
                    startActivity(intent);
                }
            });

Solution

  • I found my problem,

    Below I was referring my models lost without verifying weather it’s null or not so I added if statement to check if data is not null then it worked

    Bundle bundle= getIntent().getExtras(); models= (ArrayList<Sap_code_Model>) bundle.getSerializable("Codes");