JreduCh04 2016-07-30
跳转 (由一个画面跳转到另一个画面)
两种方法:Intent中 startActivity、startActivityForResult。
后者可设置requestCode(申请码)用于获得返回值,即由一个画面传数据到
多个画面(相同的数据),完成不同的功能,此时的requestCode的可通过判断
来获得返回值。
例;startActivity 在第一个画面中设置一个按钮,按下按钮跳转到第二个画面。
lay_out中,相对布局中设置一个Button,id为bt1;
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.administrator.jreduch04.MainActivity">
 <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/bt1"
        android:text="跳转"
        android:layout_below="@+id/textView"
        android:layout_alignStart="@+id/bt2"
        android:layout_marginTop="52dp" />
<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/bt2"
        android:text="跳转返回结果"
        android:layout_below="@+id/bt1"
        android:layout_toEndOf="@+id/textView"
        android:layout_marginTop="52dp" />
 <TextView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:id="@+id/tv"
        android:text="结果是:"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:layout_marginBottom="102dp"
        android:textColor="#ee1414"
        android:textIsSelectable="false" />
</RelativeLayout>
MainActivity:
package com.example.administrator.jreduch04;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
      private Button bt1;            //设置以一个Button,测试startActivity
      private Button bt2;           //设置第二个Button,测试startActivityForResult
      private TextView tv;           //设置一个TextView ,用于显示测试startActivityForResult返回的值
      
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         bt1 = (Button) findViewById(R.id.bt1);//通过 findViewById找到
                                               //Button,设置id的作用就是
                                               //通过findViewByld找到;
         tv = (TextView) findViewById(R.id.tv);
         bt2 = (Button) findViewById(R.id.bt2);
          bt1.setOnClickListener(new View.OnClickListener() {   //设置一个bt1的
            @Override                                           //点击事件
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                startActivity(intent);                        //Intent的 
                                                             //有两个参数,
            }                                               //MainActivity.this(第一个画面)
        });                                                //SecondActivity.class(第二个画面)
         
          
         button.setOnClickListener(new View.OnClickListener() { //设置一个Button,
              @Override
               public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,ThActivity.class);
                startActivityForResult(intent, 119);
            }
        });
          bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                intent.putExtra("arg1",5);       //intent.putExtra把名为arg1值为5,arg2
                intent.putExtra("arg2", 6);      //值为6,传给SecondActivity
                startActivityForResult(intent, 110); //110自己设置,即为申请码
            }
        });
         protected void onActivityResult(int requestCode, int resultCode, Intent data) { //与startActivityForResult配套
        super.onActivityResult(requestCode, resultCode, data);                         //requestCode(申请码), 用于判断
        Intent intent = getIntent();                                                   //发出的哪个请求 resultCode(结果吗), 
        if(requestCode ==110){                           //110即为上面设置的                                                    //可用来判断是哪个Activity返回的数据
       tv.setText("结果是加法:" + resultCode);}         //resultCode为SecondActivity中设置的结果码 ,但结果码为"arg1+arg2",就实现了相加的操作
       else if(requestCode ==119){
            tv.setText("老师:"+data.getStringExtra("re"));//得到ThActivity中的EditView中的文本
      } 
    }
}
package com.example.administrator.jreduch04;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class SecondActivity extends AppCompatActivity { //SecondActivity 第二个画面
    @Override
   protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Intent intent= getIntent();               //必须使用Intention方法
        int arg1 =  intent.getIntExtra("arg1",0);//调用方法intention.getIntExtra
        int arg2 = intent.getIntExtra("arg2",0); //得到MainActivity穿来的
                                                 //arg1,arg2;第二个参数为没得到
        //setResult(120);                        //arg1,arg2时的数值。
        if(arg1>0 && arg2>0){
            setResult(arg1+arg2,intent);        //setResult中的第一个参数为resultCode,第二个参数为Intention date,返回相加的数值,
            finish();                          //不能漏掉,否则不能返回第一个画面
        }
       }
}
package com.example.administrator.jreduch04;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;          //实现由MainActrivity跳转到ThActivity
                                         //输入问题答案,再MainActivity中显示
public class ThActivity extends AppCompatActivity {   //设置第三个Activity
    private EditText editText;           //设置EditView,输入问题答案
    private Button   button3;            //按下button在MainActivity中显示
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_th);
        editText= (EditText) findViewById(R.id.editText);
        button3 = (Button) findViewById(R.id.button3);
        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=getIntent();
                final String st= editText.getText().toString();//得到输入到EditView中的文本
                intent.putExtra("re", st);  //调用intent.putExtra,返回
                setResult(1, intent);
                finish();
             }
        });
    }
 }
Activity间的跳转,startActivity与startActivityForResult
原文:http://www.cnblogs.com/andzhang/p/5721832.html