使用Intent的传递进行Activity之间的跳转、传值。
实现效果:
实现思路:
第一步:写上两个界面。
第一个界面包含:用户名EditText控件,跳转到写内容的Button按钮,展示内容信息的TextView控件。
第二个界面包含:展示用户名的TextView控件,编写内容的EditText控件,确定按钮
第二步:在Activity中实现点击方法,通过Bundle进行放值,Intent进行传值。
第三步:在onCreate()方法中拿到通过Intent传递的值设置到页面。
实现代码:
activity_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"
android:orientation="vertical"
tools:context="com.example.g160628_android12_activitytest.MainActivity">
<!--用户名-->
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入用户名"
android:id="@+id/et_main_uname"
/>
<!--跳转到写内容的页面-->
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="写内容"
android:onClick="writeContent"
/>
<!--用来展示书写的内容-->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tv_main_showContent"
/>
</LinearLayout>
activity_content.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"
android:orientation="vertical"
tools:context="com.example.g160628_android12_activitytest.ContentActivity">
<!--展示你好+用户名-->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tv_content_showname"
/>
<!--编写内容与确定按钮-->
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="5"
android:hint="请书写内容"
android:id="@+id/et_content_text"
android:gravity="top"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="确定"
android:onClick="ok"
/>
</LinearLayout>
MainActivity.java
package com.example.g160628_android12_activitytest;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private EditText et_main_uname;
private TextView tv_main_showContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得activity_content中的展示姓名的TextView控件
et_main_uname = (EditText) findViewById(R.id.et_main_uname);
//获得从activity_content跳转回来展示内容的控件
tv_main_showContent = (TextView) findViewById(R.id.tv_main_showContent);
}
//跳转到写内容的页面,同时将EditText中的用户名传递到activity_content中
public void writeContent(View view){
//实例化Intent
Intent intent=new Intent(this,ContentActivity.class);
//获得TextView控件的值
String uname=et_main_uname.getText().toString();
//实例化Bundle
Bundle bundle=new Bundle();
//将用户名存入到bundle中
bundle.putString("uname",uname);
//将bundle数据类型绑定到intent上
intent.putExtra("bundle",bundle);
//用为目的的开始方法,参数为intent,与请求码
startActivityForResult(intent,0x201);
}
//特意用来接收结果值的方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//根据ID获得Intent中的bundle
Bundle bundle=data.getBundleExtra("bundle");
//获得内容
String content=bundle.getString("content");
//获得尾缀
String end=bundle.getString("end");
//将值展示到界面
tv_main_showContent.setText(content+"\n\t\t\t\t"+end);
}
}
ContentActivity.java
package com.example.g160628_android12_activitytest;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class ContentActivity extends AppCompatActivity {
private TextView tv_content_showname;
private EditText et_content_text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_content);
//获得传递的bundle值
Bundle bundle=getIntent().getBundleExtra("bundle");
//根据姓名获得uname
String uname=bundle.getString("uname");
//获得展示姓名的TextView控件
tv_content_showname = (TextView) findViewById(R.id.tv_content_showname);
//设置值
tv_content_showname.setText("你好"+uname);
//获得编写内容的EditText控件
et_content_text = (EditText) findViewById(R.id.et_content_text);
}
//编写内容完毕的点击方法
public void ok(View view){
//实例化Intent
Intent intent=new Intent();
//获得内容的值
String content=et_content_text.getText().toString();
//实例化bundle的值
Bundle bundle=new Bundle();
//将content内容绑定到bundle上
bundle.putString("content",content);
//绑定一个尾缀到bundle上
bundle.putString("end","一只今年18的小壁花");
//传到页面上
intent.putExtra("bundle",bundle);
//设置结果
setResult(0x101,intent);
//自杀的操作
finish();
}
}
然后配置要记得配,注意的地方
1、
//用为目的的开始方法,参数为intent,与请求码
startActivityForResult(intent,0x201);
2、//设置结果
setResult(0x101,intent);
//自杀的操作
finish();
3、配置
关于传值的分享如上,欢迎各位指点一二