Перезагрузка ресурсов Android

#android #resources #reloading

Вопрос:

Я пытаюсь загрузить изображение с изображением во время выполнения на основе пользовательского ввода. Изображения доступны только во время выполнения.

Я знаю, что единственный способ сделать это-подкласс класса ресурсов и переопределить необходимый метод. Я также знаю, что конструктор класса ресурсов теперь устарел, но в данный момент это не проблема.

Проблема в том, что Resources.getDrawable (), который, как я думал, был методом, возвращающим рисование моего изображения и требующим переопределения, кажется неправильным. Вместо того, чтобы возвращать мое изображение, оно возвращает только системные чертежи, такие как «android:drawable/screen_background_selector_dark».

Для тестирования я предоставил изображение в своем макете.

Вот мой код:

Моя Деятельность:

 public class LearnActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main); } protected void attachBaseContext(Context base) {  super.attachBaseContext(new MyContext(base)); } }  //..........................  final class MyContext extends ContextWrapper { Context base; MyContext(Context base) {  super(base);  this.base=base; } public Resources getResources() {  return new MyResources(base,super.getAssets(),super.getResources().getDisplayMetrics(),super.getResources().getConfiguration()); } }  //..........................  final class MyResources extends Resources {  Context base;  MyResources(Context base,AssetManager assets, DisplayMetrics metrics,Configuration conf)  {  super(assets,metrics,conf);  this.base=base;  }  public Drawable getDrawable(int id,Resources.Theme theme)  {  Toast.makeText(base,"getDrawable:n" getResourceName(id),Toast.LENGTH_LONG).show();  return super.getDrawable(id,theme);  } }  

мой макет:

 lt;?xml version="1.0" encoding="utf-8"?gt; lt;LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:orientation="vertical"gt;   lt;ImageView  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:src="@drawable/icon_os"/gt;  lt;/LinearLayoutgt;  

В тосте отображается сообщение «android:рисованный/screen_background_selector_dark» вместо «android:рисованный/icon_os».

Что я здесь упускаю?

Спасибо вам всем.