我有一个Android应用程序,它带有自定义对象,实现了可Parcelable接口。我设置它的方法是,我的程序最初从包中的文件创建一个自定义类products
的ArrayList
。我可以看到并确认arraylist和它的实例变量被适当地填充。这个类有几个实例变量,其中一个是另一个ArrayList
,但带有String
类。记住这个事实。
我正在尝试将ArrayList
传递到一个新活动中,如下所示:
try {
Intent i = new Intent(RootActivity.this, ProductsActivity.class); //Intent from this activity to the next
i.putParcelableArrayListExtra("Products", app_products); //Puts my ArrayList<Class A> as an extra
startActivity(i); //Launch the activity
}
catch(Exception e){
Log.d("Activity Error", "Error Here:" + e.getMessage());
}
我正在收集新活动中的意图返回的信息,方法是使用以下方法取出arraylist
app_products = getIntent().getParcelableArrayListExtra("Products");
public class Product implements Parcelable{
private String name;
private String cost;
private ArrayList<String> similarItems;
public Product{
name = null;
cost = null;
similarItems = new ArrayList<String>();
}
public Product(String name, String cost){
this();
this.name = name;
this.cost = cost;
}
public addSimilarItem(String item){
similarItems.add(item);
}
public static final Parcelable.Creator<Product> CREATOR
= new Parcelable.Creator<Product>()
{
public Product createFromParcel(Parcel in) {
return new Product(in);
}
public Product[] newArray(int size) {
return new Product[size];
}
};
public int describeContents(){
return 0;
}
private Product(Parcel in){
name = in.readString();
cost = in.readString();
similarItems = in.readArrayList(String.class.getClassLoader());
}
public void writeToParcel(Parcel out, int flags){
out.writeString(name);
out.writeString(cost);
out.writeList(similarItems);
}
}
因此这可以很好地工作而不在类中添加我的String arraylist
注释掉out.writeList(similarItems);
以及similarItems=In.ReadArrayList(String.Class.GetClassLoader());
但是一旦您将它们重新添加到类中,应用程序就会崩溃,但它甚至不会抛出一条用于调试的消息。我已经围绕try-catch
语句进行了所有的工作,而android甚至没有报告应用程序在跳板上的正常对话框中崩溃。我真的不知所措。
如果我能提供任何额外的信息,请告诉我。
可以肯定的是,您的问题是使用writeList()
。WriteList()
似乎表明,对于列表中包含的项,它遵循与WriteValue()
相同的约定。然而,readlist()
似乎表明这些值必须是parcelable
(string
不是)。
不管是哪种方式,这些调用通常都必须非常具体地链接到它们的反向调用(例如,writeString()
必须用readString()
读入,而不是readValue()
),因此您应该使用提供的方法来读/写string
list
:
// Takes in a List<String> which may be null
out.writeStringList(similarItems);
// Returns either null or a new ArrayList<String> with the contents
similarItems = in.createStringArrayList();
在以前的代码上,谁医生帮了我 现在,android应用程序在我的手机上运行时崩溃了,这是错误日志 第一个问题是在我用相机扫描二维码后,它不能显示在二维码的结果进入 第二个问题是,我从存储器中选择了一个QRcode图像,然后点击确认,它崩溃了 下面是我认为的问题 类型不匹配:推断的类型是Uri?但乌里是意料之中的 冗余SAM构造函数 'onRequestPermissionsResult(Int,数
当我尝试更新应用程序时,应用程序崩溃了。在我们的应用程序中,我们正在缓存中保存更新的版本,然后尝试从缓存中安装应用程序。应用程序由于android.os.fileuriexposedexception而崩溃。我发现通过intent.getData()在应用程序之外公开了日志android.os.fileuriexposedexception:file:///storage/emulated/0/t
不管怎样,我一直在Nexus 5中使用LG G watch,但几天后,Android Wear应用程序不断崩溃,即我一遍又一遍地收到“Android Wear意外停止”的对话框。它到了我不得不卸载Wear应用程序的地步,从而使戴G手表变得毫无意义!立即重新安装应用程序会导致同样的结果。几天后我重新安装了应用程序(看到更新已经被推送),它很好,但几天后:同样的事情发生了。 logcat输出显示: E
本文向大家介绍Java抛出异常与自定义异常类应用示例,包括了Java抛出异常与自定义异常类应用示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java抛出异常与自定义异常类。分享给大家供大家参考,具体如下: 异常处理常用方法: 常用的异常处理方法有: 一、try()catch() 语句 二、throw / throws 语句 三、自定义异常类 用途: 众所周知,当程序运行过程中,如果遇
我有以下代码,试图在ListView中创建一个简单的ListAdapter(我以前使用过这段代码,这是我唯一更改内容的地方): 当单步执行时,什么都不会发生,但当运行时,我在ChoreoGrapher中得到了一个null点异常。doCallbacks,当我创建一个空的数组列表时,它不会崩溃: 什么是编舞,为什么它会使我的应用程序崩溃? 我完全被困在可能的问题上,或者如何找出问题所在。Eclipse