Android 我怎样才能解决一个问题;类型不匹配错误:无法从元素类型转换为浮点;在包裹里?

Android 我怎样才能解决一个问题;类型不匹配错误:无法从元素类型转换为浮点;在包裹里?,android,parcelable,Android,Parcelable,当用户按下按钮时,我试图将一个可包裹的FloatArrayList从主活动传递到“CopyofBarGraph”活动 以下是主活动中捆绑包的代码(当用户按下按钮时发送): Parcelable ArrayList的代码为: public class FloatArrayList extends ArrayList<fnumber> implements Parcelable{ private static final long serialVersionUID = 663

当用户按下按钮时,我试图将一个可包裹的FloatArrayList从主活动传递到“CopyofBarGraph”活动

以下是主活动中捆绑包的代码(当用户按下按钮时发送):

Parcelable ArrayList的代码为:

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();
 }