SQLite返回不正确的可绘制对象

时间:2018-12-02 15:48:17

标签: java android database sqlite

最近一次Android Studio更新后,突然我的应用程序所有可绘制图像都不正确!

我有一个SQLite数据库,其中存储了几个静态可绘制图像。最初,我存储int R.drawable.myDrawable,但是在得知可绘制资源ID可以在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);

0 个答案:

没有答案