i just followed a video tutorial on youtube to make a note application and I've done the same exact code with the tutorial. So whenever i want to go to Edit activity from detail activity by clicking the menu icon, the app just crashed and show an error log like this.
java.lang.NullPointerException: Attempt to invoke virtual method 'long com.example.dairyapp.Diary.getID()' on a null object reference
at com.example.dairyapp.Details.onOptionsItemSelected(Details.java:67)
I've read the similiar question but i still dont understand what's wrong with it, any tips ?
the error log refer to this lines in detail activity
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == R.id.editDiary){
Intent i = new Intent(this,Edit.class);
i.putExtra("ID",diary.getID());
startActivity(i);
}
return super.onOptionsItemSelected(item);
}
details.java
package com.example.dairyapp;
import android.content.Intent;
import android.os.Bundle;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class Details extends AppCompatActivity {
TextView mDetails;
DiaryDatabase db;
Diary diary;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mDetails = findViewById(R.id.detailsDairy);
Intent i = getIntent();
Long id = i.getLongExtra("ID",0);
db = new DiaryDatabase(this);
Diary diary = db.getDiary(id);
getSupportActionBar().setTitle(diary.getJudul());
mDetails.setText(diary.getIsi());
Toast.makeText(this, "Tittle => "+ diary.getJudul(), Toast.LENGTH_SHORT).show();
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
db.deleteDiary(diary.getID());
Toast.makeText(getApplicationContext(), "Kegiatan Berhasil Dihapus", Toast.LENGTH_SHORT).show();
startActivity(new Intent(getApplicationContext(),MainActivity.class));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.edit_menu,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == R.id.editDiary){
Intent i = new Intent(this,Edit.class);
i.putExtra("ID",diary.getID());
startActivity(i);
}
return super.onOptionsItemSelected(item);
}
}
Edit.java
package com.example.dairyapp;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.content.Intent;
import android.os.Bundle;
import android.widget.EditText;
import java.util.Calendar;
public class Edit extends AppCompatActivity {
Toolbar toolbar;
EditText juduldiary,isidiary;
Calendar c;
String todaysDate;
String currentTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit);
Intent i = getIntent();
Long id = i.getLongExtra("ID",0);
DiaryDatabase db = new DiaryDatabase(this);
Diary diary = db.getDiary(id);
toolbar = findViewById(R.id.toolbar);
toolbar.setTitleTextColor(getResources().getColor(R.color.white));
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle(diary.getJudul());
}
}