Intent实现页面的跳转

来源:互联网 发布:上市公司高管薪酬数据 编辑:程序博客网 时间:2024/05/16 23:55

1.Intent(可以理解为信使(意图))------由Intent来协助完成Android各个组件之间的通讯。

1)startActivity(intent)----直接由一个页面来启动第二个页面

2)startActivityForResult(intent,requestCode)---有返回值的方式

onActivityResult(int requestCode,int resultCode,Intent data)----A接受B回传来的数据

setResult(resultCode,data)----B页面把数据回传给A

2.

第一种方式(无返回结果的跳转)

private Button btn;//private Context mContext;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    btn=(Button)findViewById(R.id.button);    //mContext=this;    btn.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            Intent intent=new Intent(MainActivity.this,Second_Activity.class);//第一个参数上下文this(用类名.this),第二个参数目标文件           // Intent intent=new Intent(mContext,Second_Activity.class);         //还有一种方法就是设置Context的全局变量            //从当前文件调到目标文件            MainActivity.this.startActivity(intent);//通过startActivity来执行这个意图。        }    });}

第二种方式(有返回值的跳转)

mainActivity.java

package com.example.xuhai.test;import android.content.DialogInterface;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;import android.widget.Toast;public class MainActivity extends AppCompatActivity  {    private Button btn;    private Button btn2;    private TextView tv;    //private Context mContext;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btn=(Button)findViewById(R.id.button);        btn2=(Button)findViewById(R.id.button1);        tv=(TextView)findViewById(R.id.textView);        //mContext=this;        btn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent=new Intent(MainActivity.this,Second_Activity.class);//第一个参数上下文this(用类名.this),第二个参数目标文件               // Intent intent=new Intent(mContext,Second_Activity.class);         //还有一种方法就是设置Context的全局变量                //从当前文件调到目标文件                MainActivity.this.startActivity(intent);//通过startActivity来执行这个意图。            }        });        btn2.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //通过startActivityForresult来实现                Intent intent =new Intent(MainActivity.this,third_Activity.class);                //第一个是intent对象,第二个是请求的一个标示                startActivityForResult(intent,1);            }        });    }    /*通过startActivityForresult跳转,接受返回数据的方法    *requestCode:请求的标识    * resultCode:第二个页面返回的标志    * data:第二个页面回传的数据    */    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if(requestCode==1&&resultCode==2){            String content=data.getStringExtra("data");            tv.setText(content);        }    }}
activity_main.xml

<?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:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:paddingBottom="@dimen/activity_vertical_margin"    tools:context="com.example.xuhai.test.MainActivity"    >    <TextView        android:text="Hello World!"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/textView" />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/button1_name"        android:id="@+id/button"        android:layout_below="@+id/textView"        android:layout_alignParentStart="true" />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/button2_name"        android:id="@+id/button1"        android:layout_below="@+id/button"        android:layout_alignParentStart="true" />    <ImageButton        android:layout_width="match_parent"        android:layout_height="50dp"        android:id="@+id/imageButton"        android:layout_below="@+id/button1"        android:layout_alignParentStart="true"        android:src="@android:drawable/ic_delete" /></RelativeLayout>
third_activity.java

package com.example.xuhai.test;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;/** * Created by xuhai on 2016/8/3. */public class third_Activity extends Activity {   // @Override    private Button bt;    private String content="你好";    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.third_view);        /*         *第二个页面回传数据         * 会传到第一个页面的实际上是一个intent对象         */        bt=(Button)findViewById(R.id.button7);        bt.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent data =new Intent();                data.putExtra("data",content);                setResult(2,data);//通过请求码和结果码来判断是哪个页面给第一个页面请求数据                finish();//结束当前页面            }        });    }}
third_view.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent">    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="点击我回传数据"        android:id="@+id/button7" /></LinearLayout>
实现结果:

2.







0 0
原创粉丝点击