Ich versuche, mein Ziel die Produktion von Aktivität B Aktivität A zu senden, wenn die App schließen ohne Fehlermeldung:Anwendung zu schließen, ohne Fehlermeldungen
Aktivität A:
public class MainActivity extends AppCompatActivity {
Intent addManualProduct;
TextView name;
ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = (TextView) findViewById(R.id.tv_name);
img = (ImageView) findViewById(R.id.iv_product);
addManualProduct = new Intent(this, Main2Activity.class);
setTitle("ACTIVITY A");
Button openB = (Button) findViewById(R.id.bt_OpenActB);
openB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(addManualProduct, 2);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 2 && resultCode == RESULT_OK){
Product p = data.getParcelableExtra("product_new");
name.setText(p.getName());
img.setImageBitmap(p.getImg());
}
}
}
Aktivität B:
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
setTitle("ACTIVITY B");
Bitmap img = BitmapFactory.decodeResource(getResources(), R.drawable.no_image);
Product product = new Product("arroz", img);
Intent toA = new Intent();
toA.putExtra("product_new", product);
setResult(RESULT_OK, toA);
finish();
}
}
Produktobjekt:
public class Product implements Parcelable{
String name;
Bitmap img;
public Product() {}
public Product(String name, Bitmap img){
this.name = name;
this.img = img;
}
protected Product(Parcel in) {
name = in.readString();
img = in.readParcelable(Bitmap.class.getClassLoader());
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeParcelable(img, flags);
}
@Override
public int describeContents() {
return 0;
}
public static final Creator<Product> CREATOR = new Creator<Product>() {
@Override
public Product createFromParcel(Parcel in) {
return new Product(in);
}
@Override
public Product[] newArray(int size) {
return new Product[size];
}
};
public String getName() {
return name;
}
public Bitmap getImg() {
return img;
}
}
Wenn ich nur parcel der String machen seine Werke ok nennen, aber wenn ich versuche, die Bitmap um es alle Anwendungen zu schließen. Ich kann den Fehler sagen, weil die Bitmap, aber ich weiß nicht warum.
Ich denke, Ihr Problem sein kann, die 'ClassLoader' Sie im' Bitmap' zu lesen verwenden. Versuchen Sie, "null" zu übergeben, damit der Standard-ClassLoader verwendet wird. Wenn das nicht funktioniert, ist es möglich, dass die Bitmap zu groß ist und nicht parzelliert werden kann. – Bradford2000