最近在学习android stdio的学习过程中遇到过一些问题,也总结了一些常见的现象,这篇文章可以帮助大家了解怎么实现两个两个Activity跳转并传输和显示数据,页面设计有点简陋,大家可以按照自己的需求在其中添加对应的控件,主要是需要学会使用的方法。
第一步:首先完成两个界面的UI设计
activity.main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".MainActivity">
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="输入内容"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
android:text="点击跳转"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText"></Button>
</androidx.constraintlayout.widget.ConstraintLayout>
activity.text.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".TextActivity">
<TextView
android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="显示传递的内容"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
第二步完成Activity的逻辑设计
编写MainActivity的函数逻辑
package com.example.shijian;
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;
public class MainActivity extends AppCompatActivity {
private EditText editText;
private Button btn1;
private Save save;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
link();//绑定控件的函数
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
//初始化一个类
save = new Save();
//获取EditText中输入的内容并添加到save对象中
save.setText(editText.getText().toString());
//传输对象
intent.putExtra("cunchu", save);
//跳转到第二个页面
intent.setClass(MainActivity.this, TextActivity.class);
startActivity(intent);
}
});
}
//绑定控件
private void link() {
editText = findViewById(R.id.editText);
btn1 = findViewById(R.id.btn1);
}
}
创建一个工具类,用于携带数据,Save.class
package com.example.shijian;
import java.io.Serializable;
//创建一个对象来携带数据
public class Save implements Serializable {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Save() {
}
}
完成第二个页面的逻辑设计TextActivity
package com.example.shijian;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class TextActivity extends AppCompatActivity {
TextView textView1;
private Save save;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_text);
//这里将绑定控件写成函数是为了减少主函数的内容,便于多个控件的绑定
link();
//获取传输的对象
Intent intent=getIntent();
//按照name获取对象中对应的数据
save= (Save) intent.getSerializableExtra("cunchu");
textView1.setText(save.getText());
}
private void link() {
textView1 = findViewById(R.id.textview1);
}
}
完成的效果如下图所示