关于Activity的页面跳转和数据回传
一,创建Activity
首先创建2个空白的Activity
如下图所示,可自动生成相应xml文件
我这创建了 OneActivity 和 TwoActivity
二,编写xml文件
1,编写 activity_one.xml
主要控件:在 界面1 中写一个按钮用来跳转到 界面2
写一个EditText组件用来输入需要传递的数据 和 传递数据按钮
再写一个TextView组件用来接收回传的数据
代码展示
<?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" android:orientation="vertical" tools:context=".Activity.OneActivity">
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="界面1" />
<Button android:id="@+id/one_b" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="oneToTwo" android:text="打开界面2" />
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="传递数据给Two" />
<EditText android:id="@+id/et_input" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="输入数据" />
<Button android:id="@+id/btn_one_send" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="传输数据到Two界面" />
<TextView android:id="@+id/tv_one_show_Tow_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="回传的数据" />
</LinearLayout>
界面展示
2,编写 activity_two.xml
主要控件:写一个 TextView 组件用来显示界面1传递过来的数据
写一个 EditText 组件用来输入需要回传的数据 和 回传按钮
代码展示
<?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" android:orientation="vertical" tools:context=".Activity.TwoActivity">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="界面2" />
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="显示one界面传递的数据" />
<TextView android:id="@+id/tv_intent_show" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<Button android:id="@+id/btn_Tow_to_one" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="回传数据给one界面" />
<EditText android:id="@+id/et_Tow_back_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="输入回传数据" />
</LinearLayout>
界面展示
三,编写Activity
1,编写 OneActivity
代码展示
package com.example.myapplication.Activity;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.example.myapplication.R;
public class OneActivity extends AppCompatActivity {
private EditText input;
private Button send;
private TextView show;
//xml中记得onClick
public void oneToTwo(View View) {
//创建一个Intent意图对象
Intent intent = new Intent(this, TwoActivity.class);
//跳转
startActivity(intent);
}
private void init() {
input = findViewById(R.id.et_input);
send = findViewById(R.id.btn_one_send);
show = findViewById(R.id.tv_one_show_Tow_text);
//给传输数据到Two界面的
按钮绑定事件
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取输入数据
String text = input.getText().toString();
//创建意图对象
Intent intent = new Intent(OneActivity.this, TwoActivity.class);
//保存数据
Bundle bundle = new Bundle();
bundle.putString("text", text);
intent.putExtras(bundle);
//跳转
startActivityForResult(intent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//处理回传数据
if (requestCode == 1) {
if (resultCode == 2) {
//获取回传数据
String msg = data.getStringExtra("msg");
show.setText(msg);
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_one);
init();
}
}
2,编写 TwoActivity
代码展示
package com.example.myapplication.Activity;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.example.myapplication.R;
public class TwoActivity extends AppCompatActivity {
private TextView show;
private Button TowtoOne;
private EditText back;
private void init() {
show = findViewById(R.id.tv_intent_show);
TowtoOne = findViewById(R.id.btn_Tow_to_one);
back = findViewById(R.id.et_Tow_back_text);
//获取意图对象
Intent intent = getIntent();
//获取数据显示
String text = intent.getStringExtra("text");
show.setText(text);
//数据回传
//绑定按钮事件
TowtoOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//设置要回传的数据
String msg = back.getText().toString();
Intent data = new Intent();
data.putExtra("msg", msg);
//设置到结果码
setResult(2, data);
TwoActivity.this.finish();
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
init();
}
}