The objective is a ListView with all Games from a specific team. How you see, I created a function (getAllGamesByTeam()) in GamesFragment.java to fill a arraylist with all games. Always, when I start this Fragment, I get the error message:
FATAL EXCEPTION: main Process: vcoach.com, PID: 5881 java.lang.NullPointerException: Attempt to invoke virtual method 'void vcoach.com.SQLiteDB_statistics_tblGame_DataSource.openReadOnly()' on a null object reference at vcoach.com.GamesFragment.onResume(GamesFragment.java:84)
GamesFragment.java:84 point at line dataSource_tblGame.openReadOnly(); in Function onResume(). The last action in Run-Log of Android Studio is open the data source. I really don't know, what could it be and I am depending on your help because I investigated a lot of time to solve this problem myself but without any success.
Code
GamesFragment.java
public class GamesFragment extends Fragment{
public static ListView listView_Games;
public static final String LOG_TAG = GamesFragment.class.getSimpleName();
public static SQLiteDB_statistics_tblGame_DataSource dataSource_tblGame;
private SQLiteDatabase db_statistics;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater_games, ViewGroup container, Bundle savedInstanceState) {
View view_games = inflater_games.inflate(R.layout.fragment_games, container, false);
//Initialize Objects
listView_Games = (ListView) view_games.findViewById(R.id.listView_Games);
final FloatingActionButton floatingActionButton_startagame = (FloatingActionButton) view_games.findViewById(R.id.floatingActionButton_startagame);
final Button button_welcome = (Button) view_games.findViewById(R.id.button_welcome);
//FloatingActionButton floatingActionBbutton_startagame
floatingActionButton_startagame.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view){
//Create DialogFragment
DialogFragment newGameDialog = new NewGameDialog();
newGameDialog.show(getActivity().getSupportFragmentManager(), "Dialog");
//Create Bundle and transfer variable gametime to GameActivity
Bundle toDialog_NewGameDialog = new Bundle();
newGameDialog.setArguments(toDialog_NewGameDialog);
}
});
//Button button_welcome
button_welcome.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(getActivity(),WelcomeActivity.class));
}
});
return view_games;
}
public void getAllGamesByTeam(){
GamesFragment_ListView_Games.arrayList_Games = dataSource_tblGame.getAllGamesByTeam(1);
GamesFragment_ListView_Games.Adapter_ListView_games adapter_ListView_games = new GamesFragment_ListView_Games.Adapter_ListView_games(getActivity(), GamesFragment_ListView_Games.arrayList_Games);
listView_Games.setAdapter(adapter_ListView_games);
listView_Games.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);
}
@Override
public void onResume() {
super.onResume();
Log.d(LOG_TAG, "Die Datenquelle wird geöffnet.");
dataSource_tblGame.openReadOnly();
getAllGamesByTeam();
}
@Override
public void onPause() {
super.onPause();
Log.d(LOG_TAG, "Die Datenquelle wird geschlossen.");
dataSource_tblGame.close();
}
SQLiteDB_statistics_tblGame_DataSource.java
public class SQLiteDB_statistics_tblGame_DataSource {
private static final String LOG_TAG = SQLiteDB_statistics_Helper.class.getSimpleName();
private SQLiteDatabase db_statistics;
private SQLiteDB_statistics_Helper db_statistics_helper;
private String[] table_game_columns = {
SQLiteDB_statistics_Helper.TABLE_GAME_COLUMN_ID,
SQLiteDB_statistics_Helper.TABLE_GAME_COLUMN_HOMETEAM_ID,
SQLiteDB_statistics_Helper.TABLE_GAME_COLUMN_GUESTTEAM,
SQLiteDB_statistics_Helper.TABLE_GAME_COLUMN_DATE
};
public SQLiteDB_statistics_tblGame_DataSource(Context context){
Log.d(LOG_TAG, "Unsere DataSource erzeugt jetzt den db_statistics_helper.");
db_statistics_helper = new SQLiteDB_statistics_Helper(context);
}
public void open(){
Log.d(LOG_TAG, "Unsere DataSource erzeugt jetzt den SQLiteDB_statistics_Helper.");
db_statistics = db_statistics_helper.getWritableDatabase();
Log.d(LOG_TAG, "Datenbank-Referenz erhalten. Pfad zur Datenbank: " + db_statistics.getPath());
}
public void openReadOnly(){
Log.d(LOG_TAG, "Unsere DataSource erzeugt jetzt den SQLiteDB_statistics_Helper aber nur zum Lesen.");
db_statistics = db_statistics_helper.getReadableDatabase();
Log.d(LOG_TAG, "Datenbank-Referenz erhalten. Pfad zur Datenbank: " + db_statistics.getPath());
}
public void close(){
db_statistics_helper.close();
Log.d(LOG_TAG, "Datenbank mit Hilfe des SQLiteDB_statistics_Helpers geschlossen.");
}
//save a game in Table Game
public SQLiteDB_statistics_tblGame createGame_SQLiteDB_statistics(long hometeam_id, String guestteam, String date){
open();
ContentValues values_game = new ContentValues();
values_game.put(SQLiteDB_statistics_Helper.TABLE_GAME_COLUMN_HOMETEAM_ID, hometeam_id);
values_game.put(SQLiteDB_statistics_Helper.TABLE_GAME_COLUMN_GUESTTEAM, guestteam);
values_game.put(SQLiteDB_statistics_Helper.TABLE_GAME_COLUMN_DATE, date);
long insertId = db_statistics.insert(SQLiteDB_statistics_Helper.TABLE_GAME, null, values_game);
Cursor cursor = db_statistics.query(SQLiteDB_statistics_Helper.TABLE_GAME, table_game_columns, SQLiteDB_statistics_Helper.TABLE_GAME_COLUMN_ID + "=" + insertId, null, null, null, null);
cursor.moveToFirst();
SQLiteDB_statistics_tblGame sqLiteDB_statistics_tblGame = cursorGame_ToSQLite_statistics(cursor);
cursor.close();
return sqLiteDB_statistics_tblGame;
}
public SQLiteDB_statistics_tblGame cursorGame_ToSQLite_statistics(Cursor cursor){
int idIndex = cursor.getColumnIndex(SQLiteDB_statistics_Helper.TABLE_GAME_COLUMN_ID);
int idHometeam_id = cursor.getColumnIndex(SQLiteDB_statistics_Helper.TABLE_GAME_COLUMN_HOMETEAM_ID);
int idGuestteam = cursor.getColumnIndex(SQLiteDB_statistics_Helper.TABLE_GAME_COLUMN_GUESTTEAM);
int idDate = cursor.getColumnIndex(SQLiteDB_statistics_Helper.TABLE_GAME_COLUMN_DATE);
long id = cursor.getLong(idIndex);
long hometeam_id = cursor.getLong(idHometeam_id);
String guestteam = cursor.getString(idGuestteam);
String date = cursor.getString(idDate);
SQLiteDB_statistics_tblGame sqLiteDB_statistics_tblGame = new SQLiteDB_statistics_tblGame(id, hometeam_id, guestteam, date);
return sqLiteDB_statistics_tblGame;
}
/*<!-- Experimental -->*/
public ArrayList<SQLiteDB_statistics_tblGame> getAllGamesByTeam(int hometeam_id) {
ArrayList<SQLiteDB_statistics_tblGame> arrayList_Games = new ArrayList<SQLiteDB_statistics_tblGame>();
String selectQuery = "SELECT * FROM " + db_statistics_helper.TABLE_GAME
+ " WHERE " + db_statistics_helper.TABLE_GAME + "." + db_statistics_helper.TABLE_GAME_COLUMN_HOMETEAM_ID + " = " + hometeam_id;
Log.e(LOG_TAG, selectQuery);
Cursor cursor = db_statistics.rawQuery(selectQuery, null);
if(cursor.moveToFirst()){
do{
SQLiteDB_statistics_tblGame sqLiteDB_statistics_tblGame = new SQLiteDB_statistics_tblGame();
sqLiteDB_statistics_tblGame.setGame_id(cursor.getInt(cursor.getColumnIndex(db_statistics_helper.TABLE_GAME_COLUMN_ID)));
sqLiteDB_statistics_tblGame.setHometeam_idfs(cursor.getInt(cursor.getColumnIndex(db_statistics_helper.TABLE_GAME_COLUMN_HOMETEAM_ID)));
sqLiteDB_statistics_tblGame.setGuestteam(cursor.getString(cursor.getColumnIndex(db_statistics_helper.TABLE_GAME_COLUMN_GUESTTEAM)));
sqLiteDB_statistics_tblGame.setDate(cursor.getString(cursor.getColumnIndex(db_statistics_helper.TABLE_GAME_COLUMN_DATE)));
arrayList_Games.add(sqLiteDB_statistics_tblGame);
}while (cursor.moveToNext());
}
return arrayList_Games;
}
SQLiteDB_statistics_tblGame.java
public class SQLiteDB_statistics_tblGame {
public long game_id;
public long hometeam_idfs;
public String guestteam;
public String date;
public SQLiteDB_statistics_tblGame(){
}
public SQLiteDB_statistics_tblGame(long game_id, long hometeam_idfs, String guestteam, String date){
this.game_id = game_id;
this.hometeam_idfs = hometeam_idfs;
this.guestteam = guestteam;
this.date = date;
}
public long getGame_id() {
return game_id;
}
public void setGame_id(long game_id){
this.game_id = game_id;
}
public long getHometeam_idfs() {
return hometeam_idfs;
}
public void setHometeam_idfs(long hometeam_idfs){
this.hometeam_idfs = hometeam_idfs;
}
public String getGuestteam() {
return guestteam;
}
public void setGuestteam(String guestteam){
this.guestteam = guestteam;
}
public String getDate() {
return date;
}
public void setDate(String date){
this.date = date;
}
}