2012-12-28 30 views
0

繼承我有一個抽象類鑽和4類,它延伸(addClass,divClass等)。鑽子類實現可分段。現在我有需要傳遞給Result活動的GamePlayActivity一個演練數組,我有兩個編譯問題。以下是相關的代碼:對象parcelable數組類是從抽象類

鑽頭類:

... 
    public Drill(Parcel in) { 
     readFromParcel(in); 
    } 

    @Override 
    public int describeContents() { 
     return 0; 
    } 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     // We just need to write each field into the 
     // parcel. When we read from parcel, they 
     // will come back in the same order 
     dest.writeInt(firstNumber); 
     dest.writeInt(secondNumber); 
     dest.writeInt(answer); 
     dest.writeInt(userAnswer); 
     dest.writeString(userAnswerString); 
     dest.writeString(symbol); 
     dest.writeInt(minBound); 
     dest.writeInt(maxBound); 
     dest.writeInt(drillNumber); 
    } 

    /** 
    * 
    * Called from the constructor to create this 
    * object from a parcel. 
    * 
    * @param in parcel from which to re-create object 
    */ 
    protected void readFromParcel(Parcel in) { 
     // We just need to read back each 
     // field in the order that it was 
     // written to the parcel 
     firstNumber = in.readInt(); 
     secondNumber = in.readInt(); 
     answer = in.readInt(); 
     userAnswer = in.readInt(); 
     userAnswerString = in.readString(); 
     symbol = in.readString(); 
     minBound = in.readInt(); 
     maxBound = in.readInt(); 
    } 

    public static final Parcelable.Creator<Drill> CREATOR = new Parcelable.Creator<Drill>() { 
     public Drill createFromParcel(Parcel in) { 
      return new Drill(in); // compilation error 
     } 

     public Drill[] newArray(int size) { 
      return new Drill[size]; 
     } 
    }; 

} 

在這裏,我想這個錯誤是因爲鑽取調用是抽象的。

這裏是addDrill類,其他類正在尋找相同的:

package com.simplemathgame; 

import android.os.Parcel; 
import android.os.Parcelable; 

public class AddDrill extends Drill { 

    AddDrill(int min, int max) { 
     super(min, max); 
     symbol = "+"; 
     firstNumber = getRandomNumber(min, max); 
     secondNumber = getRandomNumber(min, max); 
     answer = answerCalculatetion(); 
    } 

    private AddDrill(Parcel in) { 
     super(in); 
    } 

    public void readFromParcel(Parcel in) { 
     super.readFromParcel(in); 
    } 

    @Override 
    public void writeToParcel(Parcel out, int flags) { 
     super.writeToParcel(out, flags); 
    } 

    @Override 
    public int describeContents() { 
     return 0; 
    } 

    protected int answerCalculatetion() { 
     return (this.getFirstNumber() + this.getSecondNumber()); 
    } 
} 

這裏是GamePlayClass,這通過在陣列的類:

package com.simplemathgame; 

import java.util.LinkedList; 
import java.util.List; 
import java.util.ListIterator; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class GamePlayActivity extends Activity { 
... 

    Drill[] arrayOfDrills; 
    int dIndex = 0; 
... 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_game_play); 

     ... 

     arrayOfDrills = new Drill[addDrills + subDrills + mulDrills + divDrills]; 

     ... 

     finishButton.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View arg0) { 
      ... 
       Intent resultsActivity = new Intent(GamePlayActivity.this, Results.class); 
       resultsActivity.putExtra("drillArray", arrayOfDrills); 
       startActivity(resultsActivity); 
      } 

     }); 
    } 

    public static <T> void shuffle(T[] array) { 
     for (int i = array.length; i > 1; i--) { 
      T temp = array[i - 1]; 
      int randIx = (int) (Math.random() * i); 
      array[i - 1] = array[randIx]; 
      array[randIx] = temp; 
     } 
    } 
} 

而最後一部分是接收陣列的結果活動:

package com.simplemathgame; 

import android.os.Bundle; 
import android.app.Activity; 

public class Results extends Activity { 
    Drill[] arrayOfDrills; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_results); 

     Bundle extras = getIntent().getExtras(); 
     arrayOfDrills = extras.getParcelable("drillArray"); // compilation error 
    } 
} 

這裏我不知道爲什麼錯誤happ ENS。

首先編譯錯誤: 無法實例類型鑽

二編譯錯誤: 類型不匹配:不能從鑽孔[] & Parcelable轉換爲鑽[]

我應該如何修復我的代碼?謝謝!

+0

你能發佈在LogCat中顯示的確切的錯誤消息嗎? – varevarao

+0

我已經添加了錯誤,它是編譯錯誤,沒有runTime – vlio20

+0

哦對。抱歉。 – varevarao

回答

-1

鑽類是抽象的?你不能發起一個抽象類;)