文章目录
总结:
- Intent的功能:
- 显示意图:
- Activity之间的数据传递方式
Intent可以在界面跳转时传递数据。
使用Intent传递数据有两种方式。- 使用Intent的putExtra()方法传递数据(见案例1)
- 使用Bundle类传递数据(见案例2)
- 使用Intent的putExtra()方法传递数据(见案例1)
- Activity之间的数据回传方式
实现结果:
Activity之间进行数据回传时,包含3个方法,分别是:
案例1:
实验结果:
- 刚打开是主界面
activity_main
- 点击按钮,进入
activity_four
界面
- 点击第一个按钮,获得main界面传来的信息,并显示
FourMainActivity.java
public class FourMainActivity extends AppCompatActivity {
private Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_four_main);
initView();
}
private void initView() {
btn1 = findViewById(R.id.main_btn);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(FourMainActivity.this, MyFourActivity.class);
//等价于
//Intent intent = new Intent();
//intent.setClass(FourMainActivity.this,MyFourActivity.class);
intent.putExtra("aa", "第一个页面的值");
intent.putExtra("bb", 789);
//putExtra():在MainActivity中将数据传递给MyFourActivity.class
startActivity(intent);
}
});
}
}
MyFourActivity.java
public class MyFourActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_four);
initView();
}
public void initView() {
textView = findViewById(R.id.tv_1);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = getIntent();
String aa = intent.getStringExtra("aa");
int bb = intent.getIntExtra("bb",0);
//get...Extra():在MyFourActivity中获取MainActivity传递来的数据
textView.setText(aa + bb);
}
});
}
}
案例2:
实验结果:
实验结果与案例1一致,只是传递数据的方式不同了
FourMainActivity.java
public class FourMainActivity extends AppCompatActivity {
private Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_four_main);
initView();
}
private void initView() {
btn1 = findViewById(R.id.main_btn);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(FourMainActivity.this, MyFourActivity.class);
Bundle bundle = new Bundle();
bundle.putString("cc","qqqqqqqqqqq");
bundle.putInt("cv", 45612);//将数据封装到Bundle对象中
intent.putExtras(bundle);
startActivity(intent);
}
});
}
}
MyFourActivity.java
public class MyFourActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_four);
initView();
}
public void initView() {
textView = findViewById(R.id.tv_1);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Bundle extras = getIntent().getExtras();
String cc = extras.getString("cc"); //通过Bundle对象获取用户名信息
int cv = extras.getInt("cv");
textView.setText(cc + cv);
}
});
}
}
案例3:
实验结果:
启动程序,进入主界面:
点击主界面的按钮,进入MyFourActivity界面:
点击第一个TextView,回传数据:
FourMainActivity.java
public class FourMainActivity extends AppCompatActivity {
private Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_four_main);
initView();
}
private void initView() {
btn1 = findViewById(R.id.main_btn);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(FourMainActivity.this, MyFourActivity.class);
//1001为请求码,自定义
startActivityForResult(intent, 1001);
Bundle extras = getIntent().getExtras();
if (extras == null) {
Log.e("222", "没有数据");
} else {
String cc = extras.getString("cc");
int cv = extras.getInt("cv");
Log.e("222", cc + cv);
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1001 && resultCode == 1002) {
String str = data.getStringExtra("str");
btn1.setText(str);
Log.e("vv", "" + str);
}
}
}
MyFourActivity.java
public class MyFourActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_four);
initView();
}
public void initView() {
textView = findViewById(R.id.tv_1);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.putExtra("str", "计科4班");
setResult(1002, intent);
finish(); //关闭MyFourActivity这个界面
}
});
}
}
布局文件
activity_four_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity_one.FourMainActivity"
android:orientation="vertical">
<Button
android:id="@+id/main_btn"
android:layout_width="match_parent"
android:layout_height="200dp"
android:text="我是主界面的按钮"
android:textSize="35sp"
android:background="@drawable/bg_0"
android:textStyle="bold"
/>
</LinearLayout>
activity_my_four.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity_one.MyFourActivity"
android:orientation="vertical">
<TextView
android:id="@+id/tv_1"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="#FFFED6D6"
android:text="我是第一个TextView"
android:textStyle="bold"
android:textSize="35sp"
android:gravity="center"
/>
<TextView
android:id="@+id/tv_2"
android:layout_width="match_parent"
android:layout_height="200dp"
android:text="我是第二个TextView"
android:textStyle="bold"
android:textSize="35sp"
android:gravity="center"
android:background="#FFADD7F8"
/>
</LinearLayout>