[英]How To Set Image Bitmap From External Class?
我有一個主要的自動生成的類。 我想將簡單的ic_launcher png繪制到我在xml中聲明的圖像視圖中。
我的主班:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyCanvas can = new MyCanvas(this);
//ImageView img = (ImageView) findViewById(R.id.imageView1);
//img.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher));
}
}
我上的課:
public class MyCanvas extends View{
public MyCanvas(Context context) {
super(context);
ImageView img = (ImageView) findViewById(R.id.imageView1);
img.setImageBitmap(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher));
}
}
您會注意到我注釋掉了在我的主要活動中設置位圖的過程。 那是因為那是一次考驗。 該代碼在main活動中工作完美,但在其他類中失敗。 我不知道logCat的工作原理,但是我看到“空指針異常”。 我幾乎肯定是錯誤是當我加載ImageView時。
我嘗試了這個:context.findViewById(R.id.imageView1); 無濟於事。
請注意,圖像的ID為imageView1。
要從MyCanvas
類更改ImageView圖像, MyCanvas
使用MyCanvas類構造函數在Activity中將ImageView
實例初始化為后發送ImageView
實例:
public MyCanvas(Context context,ImageView img) {
super(context);
img.setImageBitmap(BitmapFactory.decodeResource(context.getResources(),
R.drawable.ic_launcher));
}
並從Activity發送ImageView實例:
setContentView(R.layout.activity_main);
ImageView img = (ImageView) findViewById(R.id.imageView1);
MyCanvas can = new MyCanvas(this,img);
在MyCanvas中,您使用的是View類的findViewById,它從該視圖子級中搜索,這與您的活動類不同。
例如,您可以在MainActivity 1st中找到根布局,並將其作為參數傳遞給MyCanvas。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.