- _nosay
Intent学习笔记
2018-01-05 10:56:55
什么是Intent
- Intent可以理解为信使(意图)
- 由Intent来协助完成Android各个组件之间的通讯
Intent实现页面之间的跳转
- startActivity(intent)
startActivityForResult(intent, requestCode);
onActivityResult(int RequestCode,int resultCode,Intent data) setResult(resultCode,data);
示例
新建两个activity,
- FActivity.java内容如下
package com.example.nosay.myapplication;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class FActivity extends AppCompatActivity {
private Button bt1;
private Button bt2;
private Context mContext;
private TextView tv;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.factivity);
/**
* 通过点击bt1实现页面之间的跳转
* 1.startActivity的方式实现跳转
* 2.初始化Intent
*/
mContext = this;
tv = (TextView) findViewById(R.id.textView1);
bt1 = (Button) findViewById(R.id.button1_first);
bt2 = (Button) findViewById(R.id.button2_second);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/**
* 第一个参数:上下文对象this
* 第二个参数:目标文件
*/
Intent intent = new Intent(mContext,SActivity.class);
startActivity(intent);
}
});
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(mContext,SActivity.class);
/**
* 第一个参数是Intent对象
* 第二个参数是请求的一个标识
*/
startActivityForResult(intent,1);
}
});
}
/**
*通过startActivityForresult跳转,接收返回数据的方法
* @param requestCode 请求标识
* @param resultCode 第二个页面返回的标识
* @param 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);
}
}
}
- SActivity.java内容如下
package com.example.nosay.myapplication;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class SActivity extends AppCompatActivity {
private Button bt;
private String content = "你好";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sactivity);
/**
* 第二个页面什么进修给第一个页面回传数据
* 回传第一个页面的实际上是一个intent对象
*/
bt = (Button) findViewById(R.id.button5);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent data = new Intent();
data.putExtra("data",content);
setResult(2,data);
//结束当前页面
finish();
}
});
}
}
新建两个布局文件,代码如下
factivity.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:id="@+id/button1_first"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="第一种启动方式" />
<Button
android:id="@+id/button2_second"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="第二种启动方式" />
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="把第二个页面回传的数据显示出来" />
</LinearLayout>
sactivity.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:id="@+id/button5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
启动以后,点击第一种启动方式按钮完成跳转