Android编程权威指南范例---步骤3--activity间的数据传递

在前面的基础上,新创建一个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
                }
            }
        });

猜你喜欢

转载自blog.csdn.net/ayangann915/article/details/81154679