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轉換爲鑽[]
我應該如何修復我的代碼?謝謝!
你能發佈在LogCat中顯示的確切的錯誤消息嗎? – varevarao
我已經添加了錯誤,它是編譯錯誤,沒有runTime – vlio20
哦對。抱歉。 – varevarao