无法在android

时间:2015-10-06 00:00:38

标签: android sqlite

背景:我正在制作一款基于回合制的多人游戏。用户随机与另一个用户匹配。在匹配时,给用户一个单词列表,他将需要用于提醒游戏。这个单词列表是从一个更大的列表中随机选择的。

相关课程是:

WordsListDatabaseHelper - 包含保存对手名称的表格和随机的单词列表。

FindingOpponentActivity - 找到对手并随机与用户匹配。

PlayGameActivity - 从数据库中检索wordList并放在这里。

WordList - 包含很长单词列表的类,有一个返回子列表的静态getRandomWords方法。

问题:一旦用户与FindOpponentActivity中的另一个匹配,就会启动一个intent并启动一个新的活动PlayGameActivity。这是假设出现随机单词列表的活动,但它们所假设的区域是空的。抛出没有异常,logcat没有奇怪的输出据我所知。

我在这行代码上设置了断点:

WordsListDatabaseHelper.insertWordList (db, wordsContainer, mOpponent.getUsername()); 在调试时,我收到以下消息:警告:没有找到行中的可执行代码(此行号)

我还在PlayGameActivity

中的这段代码上添加了其他断点
  if (cursor.moveToFirst()) {
            //get wordList
            String savedWordList  = cursor.getString(0);

            Gson gson = new Gson();
            Type type = new TypeToken<ArrayList<String>>() {}.getType();
            ArrayList<String> finalWordList = gson.fromJson(savedWordList, type);
            mCopy = new LinkedList<String>();
            mCopy.addAll(finalWordList);

此处没有消息,但是当我双击finalWordListsavedWordList时,我收到以下消息:找不到本地变量savedWordList/finalWordList。 此外,当我双击mCopy时,它显示:mCopy = null;

以下是相关代码:

public class WordsListDatabaseHelper extends SQLiteOpenHelper {

protected static Set<String> mSelectedWords;
private static final String DB_NAME = "GAME_TABLE";
private static final int DB_VERSION = 1;
protected static LinkedList<String> mCopy;
public static String oppName = "";
protected static String EXTRA_OPPONENT_NAME = "OPPONENT_NAME";


WordsListDatabaseHelper(Context context) {
    super(context, DB_NAME, null, DB_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE GAME ("
                    + "_id INTEGER PRIMARY KEY AUTOINCREMENT, "
                    + "SELECTED_WORDS TEXT, "
                    + "OPPONENT_NAME TEXT);"

WordsListDatabaseHelper(Context context) {
    super(context, DB_NAME, null, DB_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE GAME ("
                    + "_id INTEGER PRIMARY KEY AUTOINCREMENT, "
                    + "SELECTED_WORDS TEXT, "
                    + "OPPONENT_NAME TEXT);"
    );


   public static void insertWordList(SQLiteDatabase db, String wordsContainer, String oppName) {
    ContentValues wordValues = new ContentValues();

    wordValues.put("SELECTED_WORDS", wordsContainer);
    wordValues.put("OPPONENT_NAME", oppName);
    db.insert("GAME", null, wordValues);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 }

}

这是FindingOpponentActivity方法中的onResume

 //add the game values in the SQLite database
                    String wordsContainer = new String();
                    Gson gson = new Gson();
                    wordsContainer = gson.toJson(WordsList.getRandomWords());

                    SQLiteOpenHelper wordsListDatabaseHelper =
                            new WordsListDatabaseHelper(FindingOpponentActivity.this);

                    SQLiteDatabase db = wordsListDatabaseHelper.getWritableDatabase();

                    WordsListDatabaseHelper.insertWordList
                            (db, wordsContainer, mOpponent.getUsername());

最后,以下是onCreate的{​​{1}}方法代码:

PlayGameActivity

我知道这是一个非常冗长的帖子,但我将永远感激任何形式的帮助。我被困在这个问题上一段令人尴尬的长时间。

更新No.1:根据__建议,我尝试了以下方法: - 删除并重新安装应用程序apk - 清理和重建整个项目

我还在这里输入了日志消息:

 Intent randIntent = getIntent();
    mOpponentName = randIntent.getStringExtra(EXTRA_RAND_OPPONENT);
    try {
        SQLiteOpenHelper wordsListDatabaseHelper = new WordsListDatabaseHelper(this);
        SQLiteDatabase db = wordsListDatabaseHelper.getReadableDatabase();
        Cursor cursor = db.query("GAME",
                new String[] {"SELECTED_WORDS"},
                "OPPONENT_NAME =? ",
                new String[]{mOpponentName},
                null, null, null);

        //move to the first record in the Cursor

        if (cursor.moveToFirst()) {
            //get wordList
            String savedWordList  = cursor.getString(0);

            Gson gson = new Gson();
            Type type = new TypeToken<ArrayList<String>>() {}.getType();
            ArrayList<String> finalWordList = gson.fromJson(savedWordList, type);

            protected LinkedList<String> mCopy;
            mCopy = new LinkedList<String>();
            mCopy.addAll(finalWordList);

未记录任何消息。

0 个答案:

没有答案