如何跳转到 Android 测试应用程序的下一部分?

Posted

技术标签:

【中文标题】如何跳转到 Android 测试应用程序的下一部分?【英文标题】:How to jump to the next part on Android test application? 【发布时间】:2013-07-05 14:45:36 【问题描述】:

我正在开发一个测试应用程序。我现在对其进行了编码,它对第一个问题很有用。但我不知道如何回答第二个问题。我尝试使用 while-do 循环和其他方法来做到这一点,但没有奏效。我能做些什么?任何人都可以帮助我吗?

public class testing extends Activity 

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

        TextView view = (TextView) findViewById(R.id.soru1);
        final Button answer1 = (Button) findViewById(R.id.answer1);
        final Button answer2 = (Button) findViewById(R.id.answer2);
        final Button answer3 = (Button) findViewById(R.id.answer3);
        final Button answer4 = (Button) findViewById(R.id.answer4);

        final ArrayList<String> questions= new ArrayList<String>();
        countries.add("question1");
        countries.add("question2");
        countries.add("question3");
        countries.add("question4");
        countries.add("question5");
        countries.add("question6");
        countries.add("question7");
        countries.add("question8");

        final int[] answers= new int[]
                R.drawable.pic1, 
                R.drawable.pic2,
                R.drawable.pic3,
                R.drawable.pic4,
                R.drawable.pic5,
                R.drawable.pic6,
                R.drawable.pic7,
                R.drawable.pic8,
                R.drawable.correct,
                R.drawable.wrong,

                ;

        Random soru = new Random();
        final int[] rastgele = new int[1];
        for (int i=0; i<1; i++)
                rastgele[i]= soru.nextInt(8);

         ArrayList<Integer> cevap = new ArrayList<Integer>();          
         for (int k = 0; k <= 7; ++k) 
            cevap.add(k);
         Collections.shuffle(cevap);

         final Integer[] rastgele2 = new Integer[4];
                    if (rastgele[0]!=cevap.get(0))
                    rastgele2[0]=cevap.get(0);
                    else
                    rastgele2[0]=cevap.get(3);
                    if (rastgele[0]!=cevap.get(1))
                    rastgele2[1]=cevap.get(1); 
                    else
                    rastgele2[1]=cevap.get(3);
                    if (rastgele[0]!=cevap.get(2))
                    rastgele2[2]=cevap.get(2); 
                    else
                    rastgele2[2]=cevap.get(3);                    
                    rastgele2[3]=rastgele[0];
                    Collections.shuffle(Arrays.asList(rastgele2));  

        view.setText(questions.get(rastgele[0]));
        answer1.setBackgroundResource(answers[rastgele2[0]]);
        answer1.setOnClickListener(new View.OnClickListener() 

            @Override
            public void onClick(View v) 

            if (rastgele[0]==rastgele2[0])
                answer1.setBackgroundResource(answers[8]);
                questions.remove(rastgele[0]);
            else answer1.setBackgroundResource(answers[9]);
                                        
        );
        answer2.setBackgroundResource(answers[rastgele2[1]]); 
        answer2.setOnClickListener(new View.OnClickListener() 

            @Override
            public void onClick(View v) 

            if (rastgele2[1]==rastgele[0])
            answer2.setBackgroundResource(answers[8]);
                countries.remove(rastgele[0]);
            else answer2.setBackgroundResource(answers[9]);
                                        
        );
        answer3.setBackgroundResource(answer[rastgele2[2]]);   
        answer3.setOnClickListener(new View.OnClickListener() 

            @Override
            public void onClick(View v) 

                if (rastgele2[2]==rastgele[0])
            answer3.setBackgroundResource(answer[8]);
                countries.remove(rastgele[0]);
            else answer3.setBackgroundResource(answer[9]);
                                        
        );
        answer4.setBackgroundResource(answer[rastgele2[3]]);
        answer4.setOnClickListener(new View.OnClickListener() 

            @Override
            public void onClick(View v) 

                if (rastgele2[3]==rastgele[0])
            answer4.setBackgroundResource(answer[8]);
                countries.remove(rastgele[0]);
            else answer4.setBackgroundResource(answer[9]);
    
        );
 

【问题讨论】:

What can I do? 用什么? Can anyone help me for that? 用什么?为了 FSM 的缘故,问题在哪里?什么不工作? 【参考方案1】:

要转移到新活动,请参阅此帖子How to open a second activity on click of button in android app

在您现有的布局中,您需要这个

 <Button
    android:id="@+id/button1"
    android:layout_
    android:layout_
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="28dp"
    android:onClick="RandomButtonNameHere"
    android:text="@string/button" />

然后在你现有的 JAVA 中你想在点击时启动一个新的活动意图

public void RandomButtonNameHere(View view) 

Intent intent = new Intent(FromActivity.this, ToActivity.class);
startActivity(intent);

其中FromActivity 是您当前的 java 文件的名称,ToActivity 是您的新 java 文件的名称,忽略 .java 扩展名

即Question1.Java 到 Question2.Java 将是

public void ButtonToQuestion2(View view) 

Intent intent = new Intent(Question1.this, Question2.class);
startActivity(intent);

并通过 Question1.xml 中的按钮调用

 <Button
    android:id="@+id/button1"
    android:layout_
    android:layout_
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="28dp"
    android:onClick="ButtonToQuestion2"
    android:text="@string/ButtonToQuestion2" />

请注意,我的按钮名称是在我的字符串列表中定义的,但您可以将 "@string/ButtonToQuestion2" 重命名为 "Name of Button" 以获得静态名称

【讨论】:

但我想随机生成很多问题。所以我不能为所有这些使用新的活动。所有人都必须处于活动状态。 啊,对,对不起,我没有意识到/看到你想要随机问题......你能从数据库中加载问题吗?如果存储在手机上的 SQLite DB 中?这还可以让您轻松地在以后更新问题,而无需更改整个应用程序... 查看这篇文章以了解有关 SQLite 随机选择的详细信息...***.com/questions/2279706/…【参考方案2】:

鉴于您使用相同的视图来指示答案的正确性,您需要一些额外的触发器 - 我建议在您的布局中添加“下一步”按钮。

然后,将设置问题视图(为答案选择国家和资源)的代码片段提取到将问题编号作为输入的方法 void setUpQuestion(int questionIndex) 中。创建内存变量int currentQuestion = 0 用作setUpQuestion() 的输入

OnClick() 方法中“下一步”按钮递增currentQuestion 并调用setUpQuestion() 来更新视图。

【讨论】:

以上是关于如何跳转到 Android 测试应用程序的下一部分?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift 2.0 解析并跳转到 JSON 文件中的下一个块

Android应用如何跳转到应用市场详情页面

Android应用如何跳转到应用市场详情页面

Swift:跳转到 CollectionView 中的下一个文本字段

android 如何 跳转到 权限管理界面

android 程序 如何从一个ACTIVITY跳转到另一个ACTIVITY,我的两个activity都在manifest上定义过的