Android 我怎样才能解决一个问题;类型不匹配错误:无法从元素类型转换为浮点;在包裹里?
当用户按下按钮时,我试图将一个可包裹的FloatArrayList从主活动传递到“CopyofBarGraph”活动 以下是主活动中捆绑包的代码(当用户按下按钮时发送): Parcelable ArrayList的代码为:Android 我怎样才能解决一个问题;类型不匹配错误:无法从元素类型转换为浮点;在包裹里?,android,parcelable,Android,Parcelable,当用户按下按钮时,我试图将一个可包裹的FloatArrayList从主活动传递到“CopyofBarGraph”活动 以下是主活动中捆绑包的代码(当用户按下按钮时发送): Parcelable ArrayList的代码为: public class FloatArrayList extends ArrayList<fnumber> implements Parcelable{ private static final long serialVersionUID = 663
public class FloatArrayList extends ArrayList<fnumber> implements Parcelable{
private static final long serialVersionUID = 663585476779879096L;
public FloatArrayList(){
}
public FloatArrayList(Parcel in){
readFromParcel(in);
}
@SuppressWarnings("rawtypes")
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public FloatArrayList createFromParcel(Parcel in) {
return new FloatArrayList(in);
}
public FloatArrayList[] newArray(int arg0) {
return new FloatArrayList[arg0];
}};
private void readFromParcel(Parcel in) {
this.clear();
int size = in.readInt();
for (int i = 0; i < size; i++) {
fnumber fn = new fnumber();
fn.setFnumber(in.readFloat());
this.add(fn);
}
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel dest, int flags) {
int size = this.size();
dest.writeInt(size);
for (int i = 0; i < size; i++) {
fnumber fn = this.get(i);
dest.writeFloat(fn.getFnumber());
}}} >
在这之前,一切似乎都很顺利
我的问题是,当我尝试在CopyOfBarPah类中使用FloatArrayList时:
public class CopyofBarGraph extends Activity{
public FloatArrayList floatarray;
public Intent getintent(Context context)
{
//data
Bundle b = getIntent().getExtras(); //Get the intent's extras
floatarray = b.getParcelable("fnumbers"); //get our list
float[] y = new float[floatarray.size()];
int index = 0;
for (float f : floatarray) { // THIS IS THE LINE WHERE I GET THE ERROR: TYPE MISMATCH: CANNOT CONVERT FROM ELEMENT TYPE fnumber TO float.
y[index++] = f;
}
这是我第一次用Java和Android编写代码,我就是无法解决这个问题。
任何帮助或暗示都会非常有用
提前感谢。您似乎有FloatArrayList(即
ArrayList
),即是fNumber的集合。但是您尝试使用浮动
。Java不喜欢这个
试试看:
for (fnumber f : floatarray) {
//and use f.getFnumber() inside instead
}
相反:
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public FloatArrayList createFromParcel(Parcel in) {
return new FloatArrayList(in);
}
public FloatArrayList[] newArray(int arg0) {
return new FloatArrayList[arg0];
}};
尝试使用类型写入:
public static final Parcelable.Creator<FloatArrayList> CREATOR = new Parcelable.Creator<FloatArrayList>) {
@Override
public FloatArrayList createFromParcel(Parcel in) {
return new FloatArrayList(in);
}
public FloatArrayList[] newArray(int arg0) {
return new FloatArrayList[arg0];
}};
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public FloatArrayList createFromParcel(Parcel in) {
return new FloatArrayList(in);
}
public FloatArrayList[] newArray(int arg0) {
return new FloatArrayList[arg0];
}};
public static final Parcelable.Creator<FloatArrayList> CREATOR = new Parcelable.Creator<FloatArrayList>) {
@Override
public FloatArrayList createFromParcel(Parcel in) {
return new FloatArrayList(in);
}
public FloatArrayList[] newArray(int arg0) {
return new FloatArrayList[arg0];
}};
float[] y = new float[floatarray.size()];
int index = 0;
for (fnumber f : floatarray) {
y[index++] = fnumber.getFnumber();
}