最近一次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);