SQLite возвращает неверный Drawable - PullRequest
0 голосов
/ 02 декабря 2018

После самого последнего обновления Android Studio внезапно все нарисованные изображения моего приложения становятся неправильными!

У меня есть база данных SQLite, где я храню пару статических рисуемых изображений.Первоначально я сохранял int R.drawable.myDrawable, но, узнав, что идентификаторы ресурсов для рисования могут измениться в любое время на Android, я вместо этого сохраняю имя для рисования (я запишу эту часть во фрагменте кода)

До недавнего времени все работало нормально, и никаких изменений не было.

После дальнейшей отладки я обнаружил, что при присвоении имени моей базе данных все изображения отключены.Если для имени базы данных задано значение NULL, изображения будут правильными (но, очевидно, данные не могут быть сохранены или сохранены, если имя базы данных SQLite равно NULL)

Я в тупике, пожалуйста, помогите ...

Здесь я называю / не называю свою базу данных.В целях тестирования я обычно устанавливаю имя базы данных в null для быстрого взлома, поэтому мне не придется каждый раз удалять все приложение

public FFDBHelper(Context context){
    super(context,FFDBSchema.DB_NAME,null,FFDBSchema.DB_VERSION);
    //super(context,null,null,FFDBSchema.DB_VERSION);

}

Вот код для отрисовываемых ссылок (Обратите внимание, что эта конкретная таблицасохраняется в базе данных SQLite во время ее начального создания. Здесь значения не должны изменяться, за исключением squad1details && squad2details

     private static void writeModeChooserTable(SQLiteDatabase db){
       db.execSQL("CREATE TABLE " + FFDBSchema.Tables.MODE_CHOOSER_TABLE
            + "(_id INTEGER PRIMARY KEY AUTOINCREMENT,"
            + FFDBSchema.Colz.MODE_ID_COL +" TEXT,"
            + FFDBSchema.Colz.TABLE_ID_COL + " TEXT,"

            + FFDBSchema.Colz.GAME_MODE_TYPE_COL + " TEXT,"
            + FFDBSchema.Colz.GAME_MODE_PIC_COL + " TEXT,"
            + FFDBSchema.Colz.SQUAD_DETAILS_1_COL + " TEXT,"
            + FFDBSchema.Colz.SQUAD_DETAILS_2_COL + " TEXT);");

    Resources res = Funx.getInstance().getAppContext().getResources();
    String preseasonPic = res.getResourceEntryName(R.drawable.pre_back);
    String onlinePic = 
    res.getResourceEntryName(R.drawable.ffredbackcrop);
    String godPic = res.getResourceEntryName(R.drawable.god_mode_back);

    modeChooserInserter(db,AllSchema.Funx_Schema.FF_PRE_SEASON,
            preseasonPic,null,null,null);

    modeChooserInserter(db,AllSchema.Funx_Schema.FF_ONLINE,
            onlinePic,null,null,null);

     modeChooserInserter(db,AllSchema.Funx_Schema.FF_GOD_MODE,
            godPic,null,null,
            null);
   }

Здесь данные вызываются ...

public void setModeChooserArrays(String mType, String picName,String mDetails1, String mDetails2) {
    if (theModePics.size() < 3) {
        theModeTypes.add(mType);

        int resId = Funx.getInstance().getAppContext().getResources().getIdentifier(
                picName, "drawable", "com.my.package_name");

        theModePics.add(resId);

        theSquad1Details.add(mDetails1);
        theSquad2Details.add(mDetails2);
    }
}

и где я связываю фото

 @Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
    final CardView cardView = holder.cardView;
    ImageView tierPackImage = cardView.findViewById(R.id.tierPackImage);

    Drawable drawable = ContextCompat.getDrawable(cardView.getContext(), aModePics.get(position));
    tierPackImage.setImageDrawable(drawable);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...