我正在调试时得到一个数组引用,当我正常运行我的应用程序时,只要按下激活此方法的按钮就会关闭... 我希望将int worp的值添加到forloop中的数组中。
编辑: 当尝试将worp添加到arrayDobbelstenen
时,它会停止调试SpeelveldFragment类:
public class SpeelveldFragment extends Fragment {
Interfaces mCallback;
ImageButton btnBack;
//Aanmaken van een timer
Timer timer;
TimerTask timerTask;
//Alle imageviews voor de dobbelstenen en een arraylist om ze in te kunnen zetten
ImageView imgDice1, imgDice2, imgDice3, imgDice4, imgDice5, imgDice6, imgDice7, imgDice8;
ArrayList<ImageView> imgViews = new ArrayList<ImageView>();
int[] arrayDobbelstenen;
//Een nieuwe dobbelsteen aanmaken
Dobbelsteen dobbelsteen = new Dobbelsteen();
SharedPreferences prefs;
int aantalDobbelstenen = 3;
String naam = "Default";
boolean enablePinguins = false;
//De layout waar de
LinearLayout linearPinguins;
int aantalLeeuwen = 0;
int aantalHerten = 0;
int aantalPinguins = 0;
int aantalPogingen = 0;
int score = 1000;
int level = 1;
int seconds = 0;
ImageButton btnThrow;
ImageButton btnCheck;
ImageButton btnReset;
ImageButton btnHelp;
EditText txtLions;
EditText txtDeers;
EditText txtPinguins;
TextView lblTime;
Popup popup;
LayoutInflater layoutInflater;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_speelveld, container, false);
layoutInflater = inflater;
//Terug naar het hoofdmenu
btnBack = (ImageButton)v.findViewById(R.id.btnBack);
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCallback.goToPage("hoofdmenu");
}
});
//De shared preferences ophalen en de waardes hieruit toevoegen aan de variabelen
prefs = getActivity().getSharedPreferences("settings", Context.MODE_PRIVATE);
aantalDobbelstenen = prefs.getInt("aantalDobbelstenen", 3);
naam = prefs.getString("name", "Default");
enablePinguins = prefs.getBoolean("enablePinguins", false);
//Het invoerveld voor de pinguins weghalen als deze niet ingevuld hoeft te worden
linearPinguins = (LinearLayout)v.findViewById(R.id.linearPinguins);
if(!enablePinguins){
((ViewGroup) linearPinguins.getParent()).removeView(linearPinguins);
}
imgDice1 = (ImageView)v.findViewById(R.id.imgDice1);
imgDice2 = (ImageView)v.findViewById(R.id.imgDice2);
imgDice3 = (ImageView)v.findViewById(R.id.imgDice3);
imgDice4 = (ImageView)v.findViewById(R.id.imgDice4);
imgDice5 = (ImageView)v.findViewById(R.id.imgDice5);
imgDice6 = (ImageView)v.findViewById(R.id.imgDice6);
imgDice7 = (ImageView)v.findViewById(R.id.imgDice7);
imgDice8 = (ImageView)v.findViewById(R.id.imgDice8);
txtLions = (EditText)v.findViewById(R.id.txtLions);
txtLions.setEnabled(false);
txtDeers = (EditText)v.findViewById(R.id.txtDeers);
txtDeers.setEnabled(false);
if(enablePinguins){
txtPinguins = (EditText)v.findViewById(R.id.txtPinguins);
txtPinguins.setEnabled(false);
}
//Alle imageviews in de arraylist plaatsen
imgViews.add(imgDice1);
imgViews.add(imgDice2);
imgViews.add(imgDice3);
imgViews.add(imgDice4);
imgViews.add(imgDice5);
imgViews.add(imgDice6);
imgViews.add(imgDice7);
imgViews.add(imgDice8);
//Dobbelstenen gooien zodra op de knop wordt geklikt
btnThrow = (ImageButton)v.findViewById(R.id.btnThrow);
btnThrow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
gooien();
}
});
btnCheck = (ImageButton)v.findViewById(R.id.btnCheck);
btnCheck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
check();
}
});
btnCheck.setEnabled(false);
btnReset = (ImageButton)v.findViewById(R.id.btnReset);
btnReset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
reset();
}
});
btnReset.setEnabled(false);
popup = new Popup();
btnHelp = (ImageButton)v.findViewById(R.id.btnHelp);
btnHelp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create();
alertDialog.setTitle("Help");
alertDialog.setMessage(getString(R.string.lblHelp));
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();
}
});
return v;
}
public void gooien(){
//De knop om dobbelstenen te gooien uit zetten. Je kan pas weer gooien zodra je op reset klikt.
//Invoer velden activeren.
btnThrow.setEnabled(false);
txtLions.setEnabled(true);
txtDeers.setEnabled(true);
if(enablePinguins){
txtPinguins.setEnabled(true);
}
btnReset.setEnabled(true);
btnCheck.setEnabled(true);
//Klok om aantal seconden bij te houden
timer = new Timer();
timerTask = new TimerTask() {
@Override
public void run() {
seconds++;
}
};
timer.scheduleAtFixedRate(timerTask, 1000, 1000);
for(int i = 0; i < aantalDobbelstenen; i++){
//Een dobbelsteen gooien
int worp = dobbelsteen.gooi();
arrayDobbelstenen[i] = worp;
//Afbeeldingen ophalen aan de hand van het aantal ogen dat is gegooid
int resID = getResources().getIdentifier("dice" + worp , "drawable", getActivity().getPackageName());
imgViews.get(i).setImageResource(resID);
// Dieren aantal toekennen aan de variabelen
switch(MainActivity.levelSelection){
case 1:
level1();
break;
case 2:
level2();
break;
case 3:
level3();
break;
default:
break;
}
}
}
public void level1(){
}
public void level2(){
}
public void level3(){
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception
try {
mCallback = (Interfaces) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnHeadlineSelectedListener");
}
}
}
Dobbelsteen班:
public class Dobbelsteen {
//Het aantal ogen dat een dobbelsteen kan hebben.
private final int max = 6;
//De huidige waarde
private int currentValue;
//Constructor
public Dobbelsteen(){
currentValue = 1;
}
//Methode om een dobbelsteen te gooien. Geeft een int terug voor het aantal ogen.
public int gooi(){
currentValue = (int)(Math.random() * max) + 1;
return currentValue;
}
//Geeft de huidige waarde terug
public int getCurrentValue(){
return currentValue;
}
@Override
public String toString() {
return Integer.toString(currentValue);
}
}
答案 0 :(得分:-1)
arrayDobbelstenen为null。
在开始循环之前初始化arrayDobbelstenen的大小 例如:
int[] arrayDobbelstenen = new int[3];