利用Intent技术实现Activity之间传递Bundle类型数据

使用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、配置


关于传值的分享如上,欢迎各位指点一二

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章