[英]How to pass int array between activities?
我想在活动之间传递高分辨率的drawable ints
并将其显示在ImageViews
所以我在第一个活动Examples.class中将其作废:
private void PATHS(int PATH_1, int PATH_2, int PATH_3, int PATH_4, int PATH_5)
{
int[] xPATHS = {PATH_1,PATH_2, PATH_3, PATH_4, PATH_5};
Intent intent = new Intent(Examples.this, ExamplesViewer.class);
intent.putExtra("PATHS", xPATHS);
startActivity(intent);
}
我在列表监听器中调用了它:
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
PATHS(R.drawable.imageone, R.drawable.imagetwo, R.drawable.imagethree, R.drawable.imagefour, R.drawable.imagefive);
}
});
}}
然后在第二个活动“ ExamplesViewer.class”中收到了它:
Bundle intent = getIntent().getExtras();
int[] PATHS = intent.getIntArray("PATHS");
ImageView xImageView_1 = (ImageView) findViewById(R.id.PATH_1);
ImageView xImageView_2 = (ImageView) findViewById(R.id.PATH_2);
ImageView xImageView_3 = (ImageView) findViewById(R.id.PATH_3);
ImageView xImageView_4 = (ImageView) findViewById(R.id.PATH_4);
ImageView xImageView_5 = (ImageView) findViewById(R.id.PATH_5);
final BitmapFactory.Options xbm = new BitmapFactory.Options();
xbm.inSampleSize = 2;
DisplayMetrics metrics = this.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
Bitmap xImage_1 = BitmapFactory.decodeResource(getResources(), PATHS[0], xbm);
xImageView_1.setImageBitmap(xImage_1);
xImageView_1.getLayoutParams().height = height;
xImageView_1.getLayoutParams().width = width;
Bitmap xImage_2 = BitmapFactory.decodeResource(getResources(), PATHS[1], xbm);
xImageView_2.setImageBitmap(xImage_2);
xImageView_2.getLayoutParams().height = height;
xImageView_2.getLayoutParams().width = width;
Bitmap xImage_3 = BitmapFactory.decodeResource(getResources(), PATHS[2], xbm);
xImageView_3.setImageBitmap(xImage_3);
xImageView_3.getLayoutParams().height = height;
xImageView_3.getLayoutParams().width = width;
Bitmap xImage_4 = BitmapFactory.decodeResource(getResources(), PATHS[3], xbm);
xImageView_4.setImageBitmap(xImage_4);
xImageView_4.getLayoutParams().height = height;
xImageView_4.getLayoutParams().width = width;
Bitmap xImage_5 = BitmapFactory.decodeResource(getResources(), PATHS[4], xbm);
xImageView_5.setImageBitmap(xImage_5);
xImageView_5.getLayoutParams().height = height;
xImageView_5.getLayoutParams().width = width;
问题是,当我在模拟器上运行它时,它可以正常工作,但是当我在实际设备上运行它时,它将带我进入MainActivity
PS:我试图在多个设备上运行它,但是仍然无法正常工作。
----------------- 编辑 -------------
log cat error Out of memory on a 8294416-byte allocation.
加上它不再需要在仿真器上运行。
在发送而不是
int[] xPATHS = {PATH_1,PATH_2, PATH_3, PATH_4, PATH_5};
Intent intent = new Intent(Examples.this, ExamplesViewer.class);
intent.putExtra("PATHS", xPATHS);
尝试
int[] xPATHS = {PATH_1,PATH_2, PATH_3, PATH_4, PATH_5};
Intent intent = new Intent(Examples.this, ExamplesViewer.class);
Bundle bundle =new Bundle();
bundle.putIntArray("PATHS", xPATHS); // Change here
代替
Bundle intent = getIntent().getExtras();
int[] PATHS = intent.getIntArray("PATHS");
尝试
Bundle bundle = new Bundle();
int[] PATHS = bundle.getIntArrayExtra("PATHS"); // change here
这是困扰您的问题:
intent.putExtra("PATHS", xPATHS);
另外,如果您只有几个整数,则可能需要像下面这样分别输入路径整数:
intent.putExtra("PATH_1", xPATHS[0]);
intent.putExtra("PATH_2", xPATHS[1]);
intent.putExtra("PATH_3", xPATHS[2]);
intent.putExtra("PATH_4", xPATHS[3]);
intent.putExtra("PATH_5", xPATHS[4]);
祝好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.