jeudi 9 juillet 2015

How do I access the same database from different activities?

I am writing an app and I want to store the high scores. I have it working to show the high score on the end activity. However, I want to have a highscores activity to show all the highscores. I am doing this by, in the highscores activity, calling the end activity to return the high score, so the database doesn't change. After running a debug, I saw that it got to the databasehandler but got caught on getReadableDatabase(), saying that it was unable to invoke the method on a null object reference.

This is my highscores method(I didn't include the whole thing, and the ifs are because there are different difficulties of the game)

public class highscores extends Activity {
TextView mode, score;
Button right, back;
int modenum;
end get=new end();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_highscores);
    mode =(TextView)findViewById(R.id.scorebar);
    score =(TextView)findViewById(R.id.score);
    right =(Button)findViewById(R.id.button14);
    back =(Button)findViewById(R.id.highscores);
    mode.setText("Easy");
    score.setText(get.datatostring(1));
    modenum =1;
}
public void right(View view){
    if(modenum==1) {
        modenum = 2;
        mode.setText("Hard");
        score.setText(get.datatostring(2));
    }else if(modenum==2) {
        modenum = 3;
        mode.setText("X-Mode");
        score.setText(get.datatostring(3));
    }else {
        modenum = 1;
        mode.setText("Easy");
        score.setText(get.datatostring(1));
    }
}

This is in the end method

    public String datatostring(int difficulty){
    MyDBHandler db = new MyDBHandler(this, null,null,1);
    return db.datatostring(difficulty);
}

And this is in the databasehandler

        public String datatostring(int difficulty){
        SQLiteDatabase db = getReadableDatabase();
        String dbString = "";
        String c;
        if(difficulty==1)
            c = COLUMN_SCORE;
        else if(difficulty==2)
            c = COLUMN_HARD;
        else
        c = COLUMN_X;
        String query = "SELECT "+c+" FROM "+TABLE_SCORES;

        Cursor cursor = db.rawQuery(query,null);
        cursor.moveToFirst();

        if(!cursor.isAfterLast()){
            int index = cursor.getColumnIndex(c);
            String value = cursor.getString(index);
            if(value!=null){
                dbString += cursor.getString(cursor.getColumnIndex(c));
            }
        }
        db.close();
        cursor.close();
        return dbString;
    }

Aucun commentaire:

Enregistrer un commentaire