Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android Studio中随机化我的按钮?_Java_Android Studio - Fatal编程技术网

Java 如何在Android Studio中随机化我的按钮?

Java 如何在Android Studio中随机化我的按钮?,java,android-studio,Java,Android Studio,我正在做一个选择题测验,我想让我的按钮位置随机,你会怎么做?我已经制作了多个数组,其中包含问题,正如您在下面的代码中所看到的,但我不知道我是否可以让代码保持原样并进行一些修改,或者是否必须全部重写以使按钮随机 谢谢你的帮助,真的 这是我的密码: public class QuizActivity extends AppCompatActivity { ImageView mImageView; TextView mTextView; TextView mAnswer; TextView sco

我正在做一个选择题测验,我想让我的按钮位置随机,你会怎么做?我已经制作了多个数组,其中包含问题,正如您在下面的代码中所看到的,但我不知道我是否可以让代码保持原样并进行一些修改,或者是否必须全部重写以使按钮随机

谢谢你的帮助,真的

这是我的密码:

public class QuizActivity extends AppCompatActivity {

ImageView mImageView;
TextView mTextView;
TextView mAnswer;
TextView score;
TextView countDown;
RadioGroup radioGroup;
RadioButton opt1;
RadioButton opt2;
RadioButton opt3;
RadioButton opt4;
Button check;

boolean answered = false;


public static final long COUNTDOWN_IN_MILLISECODS = 30000;
public CountDownTimer countDownTimer;
public long timeLeftInMilliseconds;

private ColorStateList textColorDefaultCd;
private ColorStateList textColorDefaultRb;

int scoreNumber = 0;
int questionNumber = 0;
int questionNumberTotal = 9;
int arrayNumber = -1;


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

    mImageView = findViewById(R.id.imageView);
    mTextView = findViewById(R.id.tvQ);
    mAnswer = findViewById(R.id.tvA);
    score = findViewById(R.id.tvScore);
    countDown = findViewById(R.id.tvCd);
    opt1 = findViewById(R.id.rb1);
    opt2 = findViewById(R.id.rb2);
    opt3 = findViewById(R.id.rb3);
    opt4 = findViewById(R.id.rb4);
    check = findViewById(R.id.btnCheck);
    radioGroup = findViewById(R.id.rG);

    textColorDefaultRb = opt1.getTextColors();

    textColorDefaultCd = countDown.getTextColors();

    shuffleQuestions();
    ShowNewQuestion();
    StartCountDown();

    check.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            check.setText("Bestätigen");
            if (!answered) {
                if (opt1.isChecked() || opt2.isChecked() || opt3.isChecked() || opt4.isChecked()) {
                    CheckAnswer();
                    countDownTimer.cancel();
                    answered = true;
                } else {
                    Toast.makeText(QuizActivity.this, "Wählen Sie eine Antwort aus", Toast.LENGTH_LONG).show();
                }
            } else if (answered) {
                ShowNewQuestion();
                StartCountDown();
                answered = false;
            }
        }

    });
}


Objects q01 = new Objects(R.drawable.blauwahl, "Das Herz eines Blauwals ist ungefähr so groß wie...", "ein VW-Käfer", "Angela Merkels Privatjet", "ein VW-Käfer", "eine Vespa", "eine Wassermelone");
Objects q02 = new Objects(R.drawable.simbabwe, "Der südafrikanische Staat Simbabwe wurde 1980 unabhängig. Wie hieß das Land früher? ", "Rhodesien", "Botswana", "Rhodesien", "Südafrika", "Botsuana");
Objects q03 = new Objects(R.drawable.sonnenkoenig, " Der französische Sonnenkönig Ludwig XIV. herrschte lange Jahre über Frankreich. Wie viele? ", "72", "22", "52", "62", "72");
Objects q04 = new Objects(R.drawable.tempelberg, "Der Tempelberg in Jerusalem ist rund 144.000 Quadratmeter groß und beladen mit Mythen. Wer soll hier den ersten Mord der Menschheit begangen haben?", "Kain", "David", "Kain", "Herodes", "Joseph");
Objects q05 = new Objects(R.drawable.frauenkirche, "In welchem Jahr des Zweiten Weltkrieges wurde die Dresdener Frauenkirche zerstört? ", "1945", "1943", "1944", "1945", "1939");
Objects q06 = new Objects(R.drawable.kueste, "Welches dieser europäischen Länder hat die längste Küste?", "Griechenland", "Italien", "Griechenland", "Frankreich", "Türkei");
Objects q07 = new Objects(R.drawable.umriss, "Der Umriss welches inselreichen Landes ist hier zu sehen?", "Dänemark", "Dänemark", "Philippinen", "Kroatien", "Griechenland");
Objects q08 = new Objects(R.drawable.blitz, "Woran liegt es, dass man den Donner bei manchen Blitzen erst viel später hört als bei anderen?", "An der unterschiedlichen Entfernung der Blitze", "An der unterschiedlichen Entfernung der Blitze", "An der Stärke der elektrischen Entladungen", "An der Dichte des Regens", "An den heftigen Windböen");
Objects q09 = new Objects(R.drawable.biathlon, "Aus welchen beiden Disziplinen setzt sich ein Biathlon zuammen?", "Sportschießen und Skilanglauf", "Sportschießen und Skilanglauf", " Skispringen und Skilanglauf ", " Skilanglauf und Abfahrtslauf ", "Abfahrtslauf und Skispringen ");
Objects q10 = new Objects(R.drawable.licht, "In welcher physikalischen Einheit wird die Lichtstärke gemessen?", "Candela", "Joule", "Lumen", "Lux", "Candela");
Objects q11 = new Objects(R.drawable.sonne, "Welcher Planet unseres Sonnensystems ist am weitesten von der Sonne entfernt?", "Neptun", "Uranus", "Jupiter", "Neptun", "Saturn");

Objects[] objectsArray = new Objects[]{
        q01, q02, q03, q04, q05, q06, q07, q08, q09, q10, q11
};

public void shuffleQuestions() {

    Collections.shuffle(Arrays.asList(objectsArray));
}

public void ShowNewQuestion() {
    if (questionNumber < questionNumberTotal) {

        opt1.setTextColor(textColorDefaultRb);
        opt2.setTextColor(textColorDefaultRb);
        opt3.setTextColor(textColorDefaultRb);
        opt4.setTextColor(textColorDefaultRb);

        radioGroup.clearCheck();
        answered = false;

        arrayNumber++;

        mTextView.setText(objectsArray[arrayNumber].getmQuestion());
        mImageView.setImageResource(objectsArray[arrayNumber].getmImages());
        opt1.setText(objectsArray[arrayNumber].getmOption1());
        opt2.setText(objectsArray[arrayNumber].getmOption2());
        opt3.setText(objectsArray[arrayNumber].getmOption3());
        opt4.setText(objectsArray[arrayNumber].getmOption4());
        mAnswer.setText(objectsArray[arrayNumber].getmAnswer());

        timeLeftInMilliseconds = COUNTDOWN_IN_MILLISECODS;
    } else {
        FinishQuiz();
    }
}




    if (opt1.isChecked()) {
        if (opt1.getText().equals(mAnswer.getText())) {
            scoreNumber++;
            questionNumber++;
            UpdateScore();
            countDownTimer.cancel();

        }

    } else if (opt2.isChecked()) {
        if (opt2.getText().equals(mAnswer.getText())) {
            scoreNumber++;
            questionNumber++;
            UpdateScore();
            countDownTimer.cancel();

        }

    }
    if (opt3.isChecked()) {
        if (opt3.getText().equals(mAnswer.getText())) {
            scoreNumber++;
            questionNumber++;
            UpdateScore();
            countDownTimer.cancel();

        }

    }
    else if (opt4.isChecked()) {
        if (opt4.getText().equals(mAnswer.getText())) {
            scoreNumber++;
            questionNumber++;
            UpdateScore();
            countDownTimer.cancel();

        } else {
            questionNumber++;
            countDownTimer.cancel();
        }
    }

}

由于您的答案似乎位于数组的末尾,并且每个问题都有四个独立的可能答案,因此您可以尝试以下示例:

String[] a01 = {"Angela Merkels Privatjet", "ein VW-Käfer", "eine Vespa", "eine Wassermelone};


Collections.shuffle(Arrays.asList(a01));
然后更改对象类以接受字符串[]代替最后四个字符串,并将类属性设置为等于数组值,反之亦然,使用数组字符串值声明对象参数

e、 g

如果执行此操作,则需要在onCreate方法中声明一些引用,并在将它们加载到Objects[]对象之前,循环执行洗牌过程,然后创建或分配Objects对象

String[] a01 = {"Angela Merkels Privatjet", "ein VW-Käfer", "eine Vespa", "eine Wassermelone};


Collections.shuffle(Arrays.asList(a01));
Objects q01 = new Objects(R.drawable.blauwahl, "Das Herz eines Blauwals ist ungefähr so groß wie...", "ein VW-Käfer", a01[0], a01[1], a01[2], a01[3]);
Objects q01 = new Objects(R.drawable.blauwahl, "Das Herz eines Blauwals ist ungefähr so groß wie...", "ein VW-Käfer", a01);