博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Activity间中使用Intent传值
阅读量:6004 次
发布时间:2019-06-20

本文共 5041 字,大约阅读时间需要 16 分钟。

主页面用来输入一个值传入第二个页面显示,关闭第二个页面返回一个值

主页布局:

 

MainActivity,主要通过startActivityForResult来传递请求码,返回数据的时候,第二个页面调用Activity.setResult()方法设置返回Intent以及返回码,需要重写源Activity的onActivityResult()方法以便于接受返回的Intent,在onActivityResult()中会判断请求码和响应码

package com.example.android01;import android.os.Bundle;import android.R.string;import android.app.Activity;import android.content.Intent;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {    private final static String TAG="MainActivity";    private final static int REQUEST_CODE = 1;    private final static String CONTENT = "content";    private EditText txtEditText = null;    private Button btnButton = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        txtEditText = (EditText) this.findViewById(R.id.txt);        if (savedInstanceState != null && savedInstanceState.containsKey(CONTENT)) {            txtEditText.setText(savedInstanceState.getString(CONTENT) + "[2]");        }        btnButton = (Button) this.findViewById(R.id.btn);        btnButton.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent(MainActivity.this, SecondActivity.class);                String str=txtEditText.getText().toString();                intent.putExtra("fromMain", str);                // startActivity(intent);                // 启动需要监听返回值的Activity,并设置请求码:requestCode                startActivityForResult(intent, REQUEST_CODE);            }        });    }    /*     * (non-Javadoc)     *      * @see android.app.Activity#onActivityResult(int, int,     * android.content.Intent)     */    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        // 当otherActivity中返回数据的时候,会响应此方法        // requestCode和resultCode必须与请求startActivityForResult()和返回setResult()的时候传入的值一致。        if (requestCode == REQUEST_CODE && resultCode == SecondActivity.RESULT_CODE) {            Bundle bundle=data.getExtras();            String strResult = bundle.getString("result");            Log.i(TAG,"onActivityResult: "+ strResult);            Toast.makeText(MainActivity.this, strResult, Toast.LENGTH_LONG).show();        }    }    /*     * (non-Javadoc) 保存Activity页面状态在onStop之前执行     */    @Override    protected void onSaveInstanceState(Bundle outState) {        // TODO Auto-generated method stub        super.onSaveInstanceState(outState);        String contentString = txtEditText.getText().toString();        outState.putString(CONTENT, contentString);    }    /*     * (non-Javadoc)     *      * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)     */    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.activity_main, menu);        return true;    }}

 

每二个Activity

/** *  */package com.example.android01;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;/** * @author Administrator 2014-3-12 下午10:21:17 */public class SecondActivity extends Activity {    private final static String TAG="MainActivity";    public final static int RESULT_CODE=1;    private Button btnBack = null;    private EditText txtContent = null;    private TextView viewContent = null;    /*     * (non-Javadoc)     *      * @see android.app.Activity#onCreate(android.os.Bundle)     */    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        setContentView(R.layout.secondactivity);        txtContent = (EditText) this.findViewById(R.id.txtContent);        viewContent = (TextView) this.findViewById(R.id.viewContent);        btnBack = (Button) this.findViewById(R.id.btnBack);        Intent intent = getIntent();        Bundle bundle = intent.getExtras();        String strContentString = bundle.getString("fromMain");        Log.i(TAG,"SecondActivity: "+ strContentString);        viewContent.setText(strContentString);        btnBack.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                Intent intent = new Intent();                intent.putExtra("result", txtContent.getText().toString());                setResult(RESULT_CODE, intent);// 设置resultCode,onActivityResult()中能获取到                finish();            }        });    }}

注意请求码与返回码的对应判断,因为可能有多个请求码与返回码。

本文转自欢醉博客园博客,原文链接http://www.cnblogs.com/zhangs1986/p/3603590.html如需转载请自行联系原作者

欢醉

你可能感兴趣的文章
[译] ES2018(ES9)的新特性
查看>>
C# Selenium 破解腾讯滑动验证
查看>>
bom与dom的区别
查看>>
Matlab2012a下配置LibSVM—3.18
查看>>
Java生成-zipf分布的数据集(自定义倾斜度,用作spark data skew测试)
查看>>
修复CefSharp浏览器组件中文输入Bug
查看>>
正则与sed,grep,awk三剑客
查看>>
诊断一句SQL不走索引的原因
查看>>
iOS开发拓展篇—UIDynamic(简单介绍)
查看>>
Linux pipe函数
查看>>
图片标注工具LabelImg使用教程
查看>>
(原創) 如何設計一個數位相框? (SOC) (Quartus II) (SOPC Builder) (Nios II) (TRDB-LTM) (DE2-70)...
查看>>
/etc/profile文件内容
查看>>
量词 匹配优先与忽略优先
查看>>
一页纸IT项目管理:大道至简的实用管理沟通工具
查看>>
汽车知识:车内异味的清除方法
查看>>
IE6 7下绝对定位引发浮动元素神秘消失
查看>>
浏览器的回流和重绘及其优化方式
查看>>
Eclipse基金会发布Eclipse Photon IDE
查看>>
jQuery选择器和事件
查看>>