在前面的基础上,新创建一个activity用于查看答案(作弊),这里就要使用到activity的数据传递,将问题正确的答案从QuizeActivity传递到CheatActivity中。
我们使用Intent传值,在startActivity之前,就将答案通过intent的putExtra方法,将其以键值对的形式存储在intent中,再在cheatActivity中通过intent的getExtra方法,传入key值获取到value值。
- 首先我们创建CheatActivity,下面是布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/warning_text"
android:padding="24dp"
/>
<!--显示答案的textView-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="24dp"
tools:text="answer"
android:id="@+id/answer_text_view"/>
<!--点击button即可查看答案-->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/show_answer"
android:id="@+id/show_answer_button"/>
</LinearLayout>
- 同样,我们在quizeActivity中创建新的按钮,于跳转界面到cheatActivity
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cheat_button"
android:id="@+id/cheat_button"/>
- 接下来是传值的过程,首先我们在cheatActivity中定义intent方法,将值存储在intent中
//key,标记获取答案的key
private static final String EXTRA_ANSWER_IS_TRUE="com.apple.SummerDemo.answer_is_true";
统一使用的方法:
//存储key-value
public static Intent newIntent(Context context, boolean answerisTrue){
Intent intent=new Intent(context,CheatActivity.class);//跳转页面
intent.putExtra(EXTRA_ANSWER_IS_TRUE,answerisTrue);//将值存储在intent中,即问题的答案,这个问题正确与否
return intent;
}
- 接下来在quizeActivity的cheatButton中跳转,调用CheatActivity中的newIntent方法,传入问题的答案,并跳转界面
cheat_btn=(Button)findViewById(R.id.cheat_button);
cheat_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean answerIsTrue=mQuestions[mCurrentIndex].isAnswerTrue();//获取answerisTrue的值
Intent intent=CheatActivity.newIntent(QuizeActivity.this,answerIsTrue);//传递
startActivity(intent);//跳转页面
}
});
- quizeActivity传递了数据后,我们还要在cheatActivity中获取到他
定义变量
private boolean answerisTrue;
private TextView answerTextView;
private Button show_answer;
onCreate方法中通过传入key获取,false是方法里默认的第二个参数
answerisTrue=getIntent().getBooleanExtra(EXTRA_ANSWER_IS_TRUE,false);//获取由intent转发的对象
将答案显示在cheatActivity的洁界面上
answerTextView=(TextView) findViewById(R.id.answer_text_view);
show_answer=(Button)findViewById(R.id.show_answer_button);
show_answer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//显示答案
if(answerisTrue){//如果答案是true,就设置显示为true
answerTextView.setText(R.string.true_button);//true
}else {
answerTextView.setText(R.string.false_button);//false
}
}
});