0

我正在做儿童游戏,可以说它是智商儿童测试,我在 10 个活动中有问题,然后我希望它是随机的,当用户启动问题时,它将调用 1 of 10,当用户按下下一个问题时,它将调用 1 of 9 活动剩余。,如果再次按下一步,它将调用剩余 8 个活动中的 1 个。

我怎样才能做到这一点?

此致,

4

4 回答 4

0

我为三个活动创建了一个演示,您可以自定义多达 50 个活动。

activity_main.xml

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="main" />

<Button
    android:id="@+id/btn_next"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:text="Next" />

<Button
    android:id="@+id/btn_random"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView1"
    android:layout_below="@+id/textView1"
    android:layout_marginLeft="29dp"
    android:layout_marginTop="70dp"
    android:text="Random" />

一个.xml

 <TextView
     android:id="@+id/btn_random"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentLeft="true"
     android:layout_alignParentTop="true"
     android:layout_marginLeft="74dp"
     android:layout_marginTop="26dp"
     android:text="One" />

二.xml

<TextView

     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentLeft="true"
     android:layout_alignParentTop="true"
     android:layout_marginLeft="74dp"
     android:layout_marginTop="26dp"
     android:text="Two" />
 <Button
     android:id="@+id/btn_random"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentBottom="true"
     android:layout_alignParentRight="true"
     android:text="Next" />

三.xml

     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentLeft="true"
     android:layout_alignParentTop="true"
     android:layout_marginLeft="74dp"
     android:layout_marginTop="26dp"
     android:text="Three" />

 <Button 
     android:id="@+id/btn_random"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Next" />

MainActivity.java

public class MainActivity extends Activity implements OnClickListener {
    public static List<Integer> numberList =new ArrayList<Integer>();
    private Button btn_Random,btn_Next;
    public static int countNext=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // set resources
        btn_Random =(Button) findViewById(R.id.btn_random);
        btn_Next =(Button) findViewById(R.id.btn_next);
        btn_Random.setOnClickListener(this);


        btn_Next.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn_random:

            findRandom();

            break;
        case R.id.btn_next:
            countNext=0;

            System.out.println("first value of array:"+numberList.get(countNext));
            if(numberList.get(countNext)==1){
                countNext++;
                startActivity(new Intent(MainActivity.this,OneActivity.class));
            }else if (numberList.get(countNext) == 2) {
                countNext++;
                startActivity(new Intent(MainActivity.this,TwoActivity.class));
            }else if (numberList.get(countNext) ==3) {
                countNext++;
                startActivity(new Intent(MainActivity.this,ThreeActivity.class));           
            }




            break;
        default:
            break;
        }

    }

    private void findRandom() {
        numberList.clear();
        for(int i=0;i<3;i++){
            numberList.add(i+1);
        }

        long seed = System.nanoTime();
        Collections.shuffle(numberList, new Random(seed));
        Collections.shuffle(numberList, new Random(seed));


        for (int no : numberList) {
            System.out.println("random number:"+no);
        }

    }

}

OneActivity.java

package com.project.ques;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class OneActivity extends Activity implements OnClickListener{
    public static List<Integer> numberList =new ArrayList<Integer>();
    private Button btn_Random;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.one);
        // set resources
        btn_Random =(Button) findViewById(R.id.btn_random);

        btn_Random.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn_random:

            System.out.println("first value of array:"+MainActivity.numberList.get(MainActivity.countNext));
            if(MainActivity.numberList.get(MainActivity.countNext)==1){
                MainActivity.countNext++;
                startActivity(new Intent(OneActivity.this,OneActivity.class));
            }else if (MainActivity.numberList.get(MainActivity.countNext) == 2) {
                MainActivity.countNext++;
                startActivity(new Intent(OneActivity.this,TwoActivity.class));
            }else if (MainActivity.numberList.get(MainActivity.countNext) ==3) {
                MainActivity.countNext++;
                startActivity(new Intent(OneActivity.this,ThreeActivity.class));            
            }



            break;

        default:
            break;
        }

    }



}

TwoActivity.java

package com.project.ques;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class TwoActivity extends Activity implements OnClickListener{

    private Button btn_Random;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.two);
        // set resources
        btn_Random =(Button) findViewById(R.id.btn_random);

        btn_Random.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn_random:


            System.out.println("first value of array:"+MainActivity.numberList.get(MainActivity.countNext));
            if(MainActivity.numberList.get(MainActivity.countNext)==1){
                MainActivity.countNext++;
                startActivity(new Intent(TwoActivity.this,OneActivity.class));
            }else if (MainActivity.numberList.get(MainActivity.countNext) == 2) {
                MainActivity.countNext++;
                startActivity(new Intent(TwoActivity.this,TwoActivity.class));
            }else if (MainActivity.numberList.get(MainActivity.countNext) ==3) {
                MainActivity.countNext++;
                startActivity(new Intent(TwoActivity.this,ThreeActivity.class));            
            }



            break;

        default:
            break;
        }

    }



}

ThreeActivity.java

package com.project.ques;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ThreeActivity extends Activity implements OnClickListener{

    private Button btn_Random;
    public static int countNext=1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.three);
        // set resources
        btn_Random =(Button) findViewById(R.id.btn_random);

        btn_Random.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn_random:


            System.out.println("first value of array:"+MainActivity.numberList.get(countNext));
            if(MainActivity.numberList.get(countNext)==1){
                MainActivity.countNext++;
                startActivity(new Intent(ThreeActivity.this,OneActivity.class));
            }else if (MainActivity.numberList.get(countNext) == 2) {
                MainActivity.countNext++;
                startActivity(new Intent(ThreeActivity.this,TwoActivity.class));
            }else if (MainActivity.numberList.get(countNext) ==3) {
                MainActivity.countNext++;
                startActivity(new Intent(ThreeActivity.this,ThreeActivity.class));          
            }

            countNext++;
            break;

        default:
            break;
        }

    }



}

AndroidManifest.xml

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="17" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.project.ques.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="OneActivity"></activity>
    <activity android:name="TwoActivity"></activity>
    <activity android:name="ThreeActivity"></activity>
</application>

于 2013-05-17T11:38:36.473 回答
0
  1. 创建一个哈希表/映射,键为 1 到 10 的数字,值作为活动名称。

  2. 当用户按下下一个 - 生成一个介于 1 和 10 之间的随机数。

  3. 使用随机生成的数字作为 key 并找到活动名称。如果没有找到随机数作为密钥 - 再次生成随机数并重复步骤 3。

  4. 使用活动名称调用启动活动。

此外,每次您在开始活动中使用键/活动时 - 将其从哈希表中删除。

这可能是解决方案之一,尽管我相信人们会想出更好的解决方案。

于 2013-05-17T06:15:23.627 回答
0
  1. 创建一个数组,只需将值放入

    array[0] = 1 // 表示 array[0] 是问题 1

    数组[1] = 2

    数组[9] = 10

  2. 重新洗牌(把它想象成重新洗牌)

    选择 2 个不同的索引

    int index_a = Random.nextInt(10);

    int index_b = Random.nextInt(10);

  3. 将 array[index_a] 中的值与 array_index[b] 交换
  4. 重复 2 和 3 几次。
  5. 你得到一个随机的数组序列。
  6. 根据数组创建一个活动展示问题。
  7. 创建一个按钮,单击它将替换同一活动中的问题。

    注意:不要为每个问题创建一个活动!

于 2013-05-17T06:21:15.587 回答
0

你真的需要10个活动吗?恕我直言->否

您只需保留一个 Activity 并基于此显然您可能对不同的测验有不同的屏幕设计,然后您可以根据特定数字的随机选择创建各种布局。

现在问题变成了,我如何得到这个随机数。

如何在一个范围内生成随机数

假设您有 10 个不同的测验,这些测验最终可能会增加,因此您可能会使用一个好的Data StructureCollection. 对于您的用例,我会推荐一个Arraylist.HashMaps

Arraylist count 会告诉有多少测试,而 Hashmap 将包含问题编号,key并将value包含其他数据。它可能没有足够优化,但它只是适合你。

于 2013-05-17T06:38:05.537 回答