Я пишу приложение для Android, и у меня возникла проблема с обнаружением ошибки.Я пытаюсь получить данные из базы данных SQLite.Приложение работает нормально до тех пор, пока я не вызову активность, и оно вылетает.
Вот код, который у меня есть:
ошибка в строке mTerm = mDBHelper.getTerm (((Term) i.getSerializableExtra («term»)). getTermId ())
Ошибка: попытка вызвать виртуальный метод int com.example ... Term.getTermId () для нулевой ссылки на объект
Activity
public class TermDetailsActivity extends AppCompatActivity {
private Term mTerm;
private DBOpenHelper mDBHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_term_details);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
setTitle("Term Details");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mDBHelper = new DBOpenHelper(this);
Intent i = getIntent();
mTerm = mDBHelper.getTerm(((Term) i.getSerializableExtra("term")).getTermId());
setTextViews();
}
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_menu, menu);
menu.findItem(R.id.edit).setVisible(true);
return true;
}
private void setTextViews() {
TextView Title = findViewById(R.id.term_details_name_value);
TextView Start = findViewById(R.id.term_start_date_value);
TextView End = findViewById(R.id.term_end_date_value);
Title.setText(mTerm.getTermName());
Start.setText(mTerm.getTermStart());
End.setText(mTerm.getTermEnd());
}
}
Мой DBHelper расширяет SQLiteOpenHelper, и таблицы создаются нормально.Я могу использовать следующий код для извлечения данных о другой деятельности.
DBHelper
public Term getTerm(int termId) {
Term term;
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery(
"SELECT * FROM " + TABLE_TERMS + " WHERE " + TERM_ID + " = " +
termId, null);
res.moveToFirst();
term = new Term(
res.getInt(0),
res.getString(1),
res.getString(2),
res.getString(3));
res.close();
return term;
}
Класс терминов
public class Term implements Serializable {
private int termId;
private String termName;
private String termStart;
private String termEnd;
public Term(int termId, String termName, String termStart, String termEnd){
this.termId = termId;
this.termName = termName;
this.termStart = termStart;
this.termEnd = termEnd;
}
public int getTermId(){
return termId;
}
public void setTermId(int termId){
this.termId = termId;
}