在我的android项目中,我最初的目标是Android6,它运行得很好。
现在我在一个Android4.4设备上运行它(包括一个真实设备和一个AVD),它会因为一个IllegalAccessException而崩溃。
这就是它坠毁的地方
this.PractitionerList.add(new
PractitionerItem(1, "01A1234E", "Mary", "1st", "London", "Y")
);
PractictionerItem是一个公共类,而PractictionerList是一个声明如下的arraylist
This.PractictionerList=new ArrayList();
这是logcat...
package org.nmc_uk.www.xxxxx;
import android.os.Parcel;
import android.os.Parcelable;
public class PractitionerItem implements Parcelable {
Integer PRN;
String PIN;
String Fname;
String Lname;
String Town;
String YesNo;
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel (Parcel dest, int flags) {
dest.writeInt(PRN);
dest.writeString(PIN);
dest.writeString(Fname);
dest.writeString(Lname);
dest.writeString(Town);
dest.writeString(YesNo);
}
private PractitionerItem(Parcel in){
this.PRN = in.readInt();
this.PIN = in.readString();
this.Fname = in.readString();
this.Lname = in.readString();
this.Town = in.readString();
this.YesNo = in.readString();
}
public static final Creator<PractitionerItem> CREATOR = new Creator<PractitionerItem>() {
@Override
public PractitionerItem createFromParcel(Parcel source) {
return new PractitionerItem(source);
}
@Override
public PractitionerItem[] newArray(int size) {
return new PractitionerItem[size];
}
};
public PractitionerItem(Integer PRN, String PIN, String Fname, String Lname, String Town, String YesNo){
this.PRN = PRN;
this.PIN = PIN;
this.Fname = Fname;
this.Lname = Lname;
this.Town = Town;
this.YesNo = YesNo;
}
Public class SearchTheRegister extends AppCompatActivity {
private ArrayList<PractitionerItem> PractitionerList;
private CustomAdapter practitioner_adapter;
.
.
.
//// THIS LINE IS WHERE IT FAILS ///////////////
this.PractitionerList.add(new
PractitionerItem(1, "01A1234E", "Mary", "1st", "London", "Y")
);
有什么想法吗?
萨姆
我不确定这是否能解决您的问题,但我也有类似的问题,我意识到我的parcelable实现是错误的。我在下面为您生成了一个可打包的实现:
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeValue(this.PRN);
dest.writeString(this.PIN);
dest.writeString(this.Fname);
dest.writeString(this.Lname);
dest.writeString(this.Town);
dest.writeString(this.YesNo);
}
public PractitionerItem() {
}
protected PractitionerItem(Parcel in) {
this.PRN = (Integer) in.readValue(Integer.class.getClassLoader());
this.PIN = in.readString();
this.Fname = in.readString();
this.Lname = in.readString();
this.Town = in.readString();
this.YesNo = in.readString();
}
public static final Creator<PractitionerItem> CREATOR = new Creator<PractitionerItem>() {
@Override
public PractitionerItem createFromParcel(Parcel source) {
return new PractitionerItem(source);
}
@Override
public PractitionerItem[] newArray(int size) {
return new PractitionerItem[size];
}
};
如果这不起作用,您可以尝试在应用程序中添加multidex
支持。关于KitKat
、ArrayList
和Parcelable有一个奇怪的问题。
要添加multidex支持,请执行以下操作:
首先改变你的等级,如下所示:
android {
defaultConfig {
...
multiDexEnabled true
...
}
}
dependencies {
...
compile 'com.android.support:multidex:1.0.0'
...
}
其次,从Multidex应用程序扩展应用程序,或在oncreate
中调用Multidex.init
:
public class YourApplication extends MultiDexApplication
{
...
}
public class YourApplication extends Application
{
protected void attachBaseContext(Context base)
{
super.attachBaseContext(base);
MultiDex.install(this);
}
}
嗨,我在sping有这个配置。 启动 Web 应用程序后,将弹出以下异常: 调试ctory.support.DefaultListableBeanFactory:221-创建单例bean'mongo'的共享实例 07:04:54336调试工厂支持。DefaultListableBeanFactory:450-创建bean“mongo”的实例 07:04:54,337调试ctory.support.
我运行的是Mac OSX,我安装了android Studio-它启动正常。 问题1 我用一个空活动开始一个新项目。在最上面的窗户上我收到一条信息 问题2 我在底部窗口中看到以下错误: 错误:CompilesDKVersion android-L需要使用JDK 7 Open SDK Settings进行编译 打开文件 当我尝试在设备上运行项目时,我得到以下错误: 失败[INSTALL_FAILED
我正在从eclipseADT迁移到android Studio,我可以从Eclipse使用相同的android SDK吗?
我的类是的子类。这是一个看起来很普通的FXML控制器类: 我进行了两次和三次检查,以确保FXML中没有一个命名控件在controller类中也没有实例字段。所有实例字段都用标记。 FXML中controller类的名称与我的java文件相同,并且有适当的限定。该错误发生在调用之前,因此我不认为它与有任何关系,尽管我已经检查了它是否也用标记。 错误消息除了说它有修饰符“”之外,没有给我关于它有问题的
我已经安装了最新的cordova。版本是4.3.0。我创建了一个空的Cordova项目: 然后我添加平台: 我用以下方法构建了该项目: 但我总是得到: 然后,我尝试将目标android sdk更改为19,因此在AndroidManifest.xml中,我更改了: 自: 我再次运行build命令,仍然得到完全相同的错误。这快把我逼疯了。有人有什么想法吗?我在同一台PC上构建了许多许多cordova项
问题内容: 我将eclipse与android插件和sdk结合使用,但是由于没有目标,当执行此命令时,我无法创建虚拟设备: 我该怎么办? 和.............. 当我尝试在Eclipse AVD中安装可用软件包时,它涉及到: 正在下载SDK Platform Android 2.0 API5,版本1 SSL对等端错误地关闭…。 问题答案: 运行tools / android来检索目标。它将