如何跳转到 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 文件中的下一个块
Swift:跳转到 CollectionView 中的下一个文本字段
android 程序 如何从一个ACTIVITY跳转到另一个ACTIVITY,我的两个activity都在manifest上定义过的