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; @Override protected 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.