Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.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
Android 如何进行随机活动?_Android - Fatal编程技术网

Android 如何进行随机活动?

Android 如何进行随机活动?,android,Android,我在做儿童游戏,可以说这是IQ儿童测试,我在10个活动中有问题,然后我希望它是随机的,当用户启动问题时,它将调用10个中的1个,当用户按下下一个问题时,它将调用剩余9个活动中的1个。如果再次按下下一步,它将调用剩余8个活动中的1个 我该怎么做 致以最良好的祝愿 创建一个哈希表/映射,其中键为1到10之间的数字,值为活动名称 当用户按下下一步-生成一个介于1和10之间的随机数 使用随机生成的数字作为键并查找活动名称。如果找不到随机数作为密钥,则再次生成随机数并重复步骤3 使用活动名称调用开始

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

我该怎么做

致以最良好的祝愿

  • 创建一个哈希表/映射,其中键为1到10之间的数字,值为活动名称

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

  • 使用随机生成的数字作为键并查找活动名称。如果找不到随机数作为密钥,则再次生成随机数并重复步骤3

  • 使用活动名称调用开始活动

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

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

  • 创建一个数组,只需将值设置为

    数组[0]=1//表示数组[0]是问题1

    数组[1]=2

    数组[9]=10

  • 对阵列执行resshufle(将其视为resshuffling卡)

    选择2个不同的索引

    int index_a=Random.nextInt(10)

    int index_b=随机。nextInt(10)

  • 将数组[index_a]内的值与数组_index[b]交换
  • 重复2和3几次
  • 你得到一个随机的数组序列
  • 基于数组创建活动显示问题
  • 创建一个按钮,单击它将替换同一活动中的问题

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


  • 你真的需要10项活动吗?IMHO->否

    你只需要保留一项活动,基于此,你可能会有 不同测验的不同屏幕设计,然后您可以创建 基于特定数字的随机选择的各种布局

    现在的问题是,我如何得到这个随机数

    假设你有10个不同的测验,最终可能会增加,因此你可以使用一个好的
    数据结构
    集合
    。对于您的用例,我将推荐一个
    HashMaps
    Arraylist


    Arraylist count将告诉您有多少个测试,Hashmap将由问题编号组成,因为
    key
    value
    将包含其他数据。它可能没有得到足够的优化,但对您来说只是一个尝试。

    我为三个活动创建了一个演示,您可以自定义多达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" />
    

    ThreeActivity.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);
            }
    
        }
    
    }
    
    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;
            }
    
        }
    
    
    
    }
    
    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;
            }
    
        }
    
    
    
    }
    
    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

    
    

    对我来说似乎是个糟糕的设计。1-9问题应能在一个活动中显示。意味着活动应该更可重用,并且问题应该在活动的占位符中可替换。堆栈交换是为了帮助您成为一名更好的程序员,而不是为您编写代码。首先查找1-10之间的随机数。此随机数存储在数组中。然后单击“下一步”按钮从数组中提取数字并开始相关活动。给布局名称一、二、三。。。在活动名称“一个活动,两个活动…”上,然后轻松管理。您的答案建议如果有500个问题,您应该创建500个活动。@Rudy我不建议创建500个活动。我给出了问题的答案。
    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;
            }
    
        }
    
    
    
    }
    
    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;
            }
    
        }
    
    
    
    }
    
    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;
            }
    
        }
    
    
    
    }
    
    <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>