簡體   English   中英

如何從外部類設置圖像位圖?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM