onActivityResult的使用(Activity界面销毁数据带回)

来源:互联网 发布:ucsc数据库 编辑:程序博客网 时间:2024/06/06 03:23
demo说明.工作中遇到一种需求:一个页面中有三个条目(修改姓名,修改性别,修改年龄).点击三个条目跳转到一个Activity.当activity销毁时,会将填写的数据带回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.yzhglx.demo.MainActivity">    <TextView        android:id="@+id/but"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="#cf8585"        android:clickable="true"        android:gravity="center"        android:padding="18dp"        android:text="保存"        android:textColor="#0810e4"        android:textSize="28sp"/>    <LinearLayout        android:id="@+id/but1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="#ae9f30"        android:clickable="true">        <TextView            android:id="@+id/tv_name_title"            android:layout_width="0dip"            android:layout_height="wrap_content"            android:layout_weight="1"            android:gravity="center"            android:padding="12dip"            android:text="姓名"            android:textColor="#ed122f"            android:textSize="18sp"            />        <TextView            android:id="@+id/tv_name"            android:layout_width="0dip"            android:layout_height="wrap_content"            android:layout_weight="2"            android:padding="12dip"            android:textColor="#ed122f"            android:textSize="18sp"/>    </LinearLayout>    <LinearLayout        android:id="@+id/but2"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="#1c1cb4"        android:clickable="true">        <TextView            android:id="@+id/tv_sex_title"            android:layout_width="0dip"            android:layout_height="wrap_content"            android:layout_weight="1"            android:gravity="center"            android:padding="12dip"            android:text="性别"            android:textColor="#ed122f"            android:textSize="18sp"            />        <TextView            android:id="@+id/tv_sex"            android:layout_width="0dip"            android:layout_height="wrap_content"            android:layout_weight="2"            android:padding="12dip"            android:textColor="#ed122f"            android:textSize="18sp"/>    </LinearLayout>    <LinearLayout        android:id="@+id/but3"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="#11a743"        android:clickable="true">        <TextView            android:id="@+id/tv_age_title"            android:layout_width="0dip"            android:layout_height="wrap_content"            android:layout_weight="1"            android:gravity="center"            android:padding="12dip"            android:text="年龄"            android:textColor="#ed122f"            android:textSize="18sp"            />        <TextView            android:id="@+id/tv_age"            android:layout_width="0dip"            android:layout_height="wrap_content"            android:layout_weight="2"            android:padding="12dip"            android:textColor="#ed122f"            android:textSize="18sp"/>    </LinearLayout>    <Button        android:id="@+id/clear"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="88dp"        android:text="清空"        /></LinearLayout>

页面简单:三个条目.一个保存一个清空按钮;

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <TextView        android:id="@+id/tv_name"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="#FF0"        android:gravity="center"        android:padding="18dp"        android:text="姓名"        android:textSize="18sp"/>    <EditText        android:id="@+id/et_text"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:padding="18dp"/>    <Button        android:id="@+id/et_but"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="12dip"        android:padding="12dp"        android:text="确定"        /></LinearLayout>

此页面一个TextView,一个Edittext用于用户输入内容.点击Button确定后销毁该页面

MainActivity中代码

package com.example.yzhglx.demo;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private TextView but;    private TextView tv_name;    private TextView tv_sex;    private TextView tv_age;    private TextView tv_name_title;    private TextView tv_sex_title;    private TextView tv_age_title;    private LinearLayout but1;    private LinearLayout but2;    private LinearLayout but3;    public static final int NAME = 1;    public static final int SEX = 2;    public static final int AGE = 3;    private Button clear;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //一大波findViewById 可用快捷工具替代        but = (TextView) findViewById(R.id.but);        tv_name = (TextView) findViewById(R.id.tv_name);        tv_sex = (TextView) findViewById(R.id.tv_sex);        tv_age = (TextView) findViewById(R.id.tv_age);        tv_name_title = (TextView) findViewById(R.id.tv_name_title);        tv_sex_title = (TextView) findViewById(R.id.tv_sex_title);        tv_age_title = (TextView) findViewById(R.id.tv_age_title);        but1 = (LinearLayout) findViewById(R.id.but1);        but2 = (LinearLayout) findViewById(R.id.but2);        but3 = (LinearLayout) findViewById(R.id.but3);        clear = (Button) findViewById(R.id.clear);        but.setOnClickListener(this);        but1.setOnClickListener(this);        but2.setOnClickListener(this);        but3.setOnClickListener(this);        clear.setOnClickListener(this);    }    @Override    public void onClick(View view) {        Intent intent = new Intent(this, TwoActivity.class);        switch (view.getId()) {            case R.id.but:                String name = tv_name.getText().toString().trim();                String sex = tv_sex.getText().toString().trim();                String age = tv_age.getText().toString().trim();                if(name.isEmpty() || sex.isEmpty() || age.isEmpty()){                    Toast.makeText(this, "不能有空选项:" + age, Toast.LENGTH_SHORT).show();                    return;                }                Toast.makeText(this, "需要传递到服务器的数据: 姓名:  " + name + "性别:  " + sex + "年龄:  " + age, Toast.LENGTH_SHORT).show();                break;            case R.id.but1:                intent.putExtra("title", tv_name_title.getText().toString().trim());                startActivityForResult(intent, NAME);                break;            case R.id.but2:                intent.putExtra("title",tv_sex_title.getText().toString().trim());                startActivityForResult(intent, SEX);                break;            case R.id.but3:                intent.putExtra("title",tv_age_title.getText().toString().trim());                startActivityForResult(intent, AGE);                break;            case R.id.clear:                tv_name.setText("");                tv_sex.setText("");                tv_age.setText("");                break;        }    }        //通过此方法接收数据    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if (resultCode != 1) {            return;        }        String title = data.getStringExtra("title");        switch (requestCode) {            case NAME:                tv_name.setText(title);                break;            case SEX:                tv_sex.setText(title);                break;            case AGE:                tv_age.setText(title);                break;        }    }}开启Activity的时候需要使用startActivityForResult方法.
Twoactivity页面
package com.example.yzhglx.demo;import android.content.Intent;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;/** * 作者 杨义 , 时间 2017/6/12. * <p> * 警句:真英雄大勇无谓,好风景总在险峰 */public class TwoActivity extends AppCompatActivity {    private TextView tv_name;    private EditText et_text;    private Button et_but;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.twoactivity);        tv_name = (TextView) findViewById(R.id.tv_name);        et_text = (EditText) findViewById(R.id.et_text);        et_but = (Button) findViewById(R.id.et_but);        Intent intent = getIntent();        String title = intent.getStringExtra("title");        tv_name.setText(title);        et_but.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                String trim = et_text.getText().toString().trim();                if(trim.isEmpty()){                    Toast.makeText(TwoActivity.this, "不能为空", Toast.LENGTH_SHORT).show();                    return;                }                Intent intent = new Intent();                intent.putExtra("title", trim);                setResult(1, intent);                finish();            }        });    }}
功能简单,实现简单,但是本人忘性比较大.特使用博客帮助记忆.
 


阅读全文
2 0