加载活动后在android中更改imageView对象

加载活动后在android中更改imageView对象,android,android-activity,android-intent,Android,Android Activity,Android Intent,我正在用Android制作一个应用程序,它需要从一个活动发送位图对象,并在第二个活动页面上显示发送的位图对象。但是,我得到了一个空白屏幕 以下是我发送位图对象的代码示例:- Intent intent = new Intent(Display2.this, Display3.class); ImageView iv = (ImageView) findViewById(R.id.imageView1); Bitmap bitmap = Bitmap.createBitmap(iv.getWidt

我正在用Android制作一个应用程序,它需要从一个活动发送位图对象,并在第二个活动页面上显示发送的位图对象。但是,我得到了一个空白屏幕

以下是我发送位图对象的代码示例:-

Intent intent = new Intent(Display2.this, Display3.class);
ImageView iv = (ImageView) findViewById(R.id.imageView1);
Bitmap bitmap = Bitmap.createBitmap(iv.getWidth(), iv.getHeight(), Bitmap.Config.RGB_565);
intent.putExtra("BitmapImage", bitmap);
startActivity(intent);
现在,第二个活动的代码部分将检索发送的对象并在屏幕上显示:-

public class Display3 extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        Bitmap bitmap = (Bitmap)getIntent().getParcelableExtra("BitmapImage");
        ImageView myIV = (ImageView) findViewById(R.id.imageView1);
        bitmap = bitmap.createBitmap(myIV.getWidth(), myIV.getHeight(), Bitmap.Config.RGB_565);
        myIV.setImageBitmap(bitmap);
        setContentView(R.layout.display3);

    }
}
有人能指出这部分有什么问题吗


谢谢

位图实现可包裹对象,因此您可以始终按如下意图传递它:

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
并在另一端检索它:

Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");

位图实现可包裹对象,因此您可以始终按如下意图传递它:

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
并在另一端检索它:

Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");

这不利于将位图从一个活动传递到另一个活动

您可以简单地将位图命名为static first。 然后创建一个方法,如

public static Bitmap getBitmap(){
    return bitmap;
}
然后你可以通过其他活动打电话

bitmapexistingclass.getBitmap();

如果我们使用intents来传递位图,我们将得到一些错误检查这个问题这不利于将位图从一个活动传递到另一个活动

您可以简单地将位图命名为static first。 然后创建一个方法,如

public static Bitmap getBitmap(){
    return bitmap;
}
然后你可以通过其他活动打电话

bitmapexistingclass.getBitmap();

如果我们使用intents传递位图,我们将收到一些错误。请从上面的代码中检查此问题,您正在创建一个空位图:

ImageView iv = (ImageView) findViewById(R.id.imageView1);
Bitmap bitmap = Bitmap.createBitmap(iv.getWidth(), iv.getHeight(), Bitmap.Config.RGB_565);

我看不出有任何理由可以从这段代码中得到其他任何东西,然后从上面的代码中创建一个空位图,其高度和宽度等于imageView高度和宽度:

ImageView iv = (ImageView) findViewById(R.id.imageView1);
Bitmap bitmap = Bitmap.createBitmap(iv.getWidth(), iv.getHeight(), Bitmap.Config.RGB_565);

我看不出有任何理由可以从这段代码中得到任何其他东西,然后空白黑色位图的高度和宽度等于imageView的高度和宽度,您正在创建一个空的
位图
对象
,其高度和宽度与
图像视图
对象相等;
由于位图实现了
Parcelable
,您可以简单地将其打包并在其他
活动中检索

您希望从android中填充图形的
Bitmap
本身,您正在创建一个空的
位图
对象
,其高度和宽度与
图像视图
对象相等;
由于位图实现了
Parcelable
,您可以简单地将其放入bundle中,然后在其他
活动中检索

使用以下两种方法将位图转换为字符串,反之亦然。然后可以将带有意图的字符串从活动传递到另一个活动。我也在我的申请中这样做。 那么我们就不需要使用ParcelableExtra和Serializable类

public String convertBitmapToString(Bitmap src) {
if(src!= null){
ByteArrayOutputStream os=new ByteArrayOutputStream();
src.compress(android.graphics.Bitmap.CompressFormat.PNG, 100,(OutputStream) os);
byte[] byteArray = os.toByteArray();
return Base64.encodeToString(byteArray,Base64.DEFAULT);  
}
return null;            
}

public Bitmap getBitMapFromString(String src){
Bitmap bitmap = null;
if(src!= null){
byte[] decodedString = Base64.decode(src.getBytes(), Base64.DEFAULT);
bitmap = BitmapFactory.decodeByteArray(decodedString,0,decodedString.length);
return bitmap;
}
return null;
}

使用以下两种方法将位图转换为字符串,反之亦然。然后可以将带有意图的字符串从活动传递到另一个活动。我也在我的申请中这样做。 那么我们就不需要使用ParcelableExtra和Serializable类

public String convertBitmapToString(Bitmap src) {
if(src!= null){
ByteArrayOutputStream os=new ByteArrayOutputStream();
src.compress(android.graphics.Bitmap.CompressFormat.PNG, 100,(OutputStream) os);
byte[] byteArray = os.toByteArray();
return Base64.encodeToString(byteArray,Base64.DEFAULT);  
}
return null;            
}

public Bitmap getBitMapFromString(String src){
Bitmap bitmap = null;
if(src!= null){
byte[] decodedString = Base64.decode(src.getBytes(), Base64.DEFAULT);
bitmap = BitmapFactory.decodeByteArray(decodedString,0,decodedString.length);
return bitmap;
}
return null;
}

但是,无论位图是否成功创建到位图对象,进行建议的更改都会在codecheck中显示错误。但是,无论位图是否成功创建到位图对象,进行建议的更改都会在codecheck中显示错误。在进行更改后,它表示无法启动活动:(好吧,那是另一个故事:)但是如果你写你修改过的代码,并点击堆栈跟踪日志-也许我可以在做了修改后帮上忙,它说无法启动活动:(好吧,那是另一个故事:)但是如果你写你修改过的代码,点击堆栈跟踪日志-也许我可以帮上忙