Android Intent参数传递

Android Intent参数传递
Android参数传递有两种方式,
1.是从一个Activity传递参数到第二个Activity并在第二个Activity获取数据
2.是从第二个Activity关闭后将参数传递到第一个Activity

(1)第一种:
public class FirstDemoActivity extends Activity {
   private Button button3;
   private EditText editText;
     @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first);

        button3=(Button) this.findViewById(R.id.button3);
        editText=(EditText) this.findViewById(R.id.editText1);
        button3.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                String content=editText.getText().toString();
                Intent intent=new Intent(FirstDemoActivity.this,SecondDemoActivity.class);
                //可以把要传递的参数放到一个bundle里传递过去,bundle可以看做一个特殊的map.
                Bundle bundle=new Bundle();
                bundle.putString("result", "第一个activity的内容");
                bundle.putString("content",content);
                intent.putExtras(bundle);
                //也可以用这种方式传递.
                //intent.putExtra("result", "第一个activity的内容");

                startActivity(intent);
            }
        });
    }
}
接收参数方法
public class SecondDemoActivity extends Activity {
    private TextView textView;
     @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);

        textView=(TextView) this.findViewById(R.id.textView3);
        Intent intent=getIntent();
        String result=intent.getStringExtra("result");
        String content=intent.getStringExtra("content");
        textView.setText(result+" : "+content);
    }
}
(2)第二种
第二种方式需要在跳转到第二个Activity的时候指定requestCode,同时第二个Activity关闭之前也需要指定resultCode,这样我们在获取返回值的时候才能够准确判断是否为我们需要的数据
1.跳转到第二个Activity并指定resultCode
private OnClickListener btnAdd_click = new OnClickListener() {
    public void onClick(View arg0) {
        Intent intent = new Intent();
        intent.setClass(getApplicationContext(), LifingAddActivity.class);
        // startActivity(intent);
        /*
         * 如果希望启动另一个Activity,并且希望有返回值,则需要使用startActivityForResult这个方法,
         * 而不是startActivity方法
         * 第一个参数是Intent对象,第二个参数是一个requestCode值,如果有多个按钮都要启动Activity
         * ,则requestCode标志着每个按钮所启动的Activity
         */
        startActivityForResult(intent, 1000);

        // 设置切换动画,从右边进入,左边退出
        overridePendingTransition(R.anim.in_from_right,
                R.anim.out_from_left);
    }
};
2.在第一个Activity重写onActivityResult方法
/**
 * 弹出的Activity关闭后所触发的事件
 */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    // 根据requestCode判断是否为当前Activity打开的另一个Activity,根据resultCode判断具体执行什么操作关闭的第二个Activity
    if (requestCode == 1000 && resultCode == 1) {
        new Thread() {
            public void run() {
                String result=intent.getStringExtra("result");
            }
        }.start();
    }
}

3.在第二个Activity关闭前指定resultCode和data
/**
 * 保存按钮事件
 */
private OnClickListener btnSave_click = new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (CheckInput()) {
            new Thread() {
                public void run() {
                    Bundle data = new Bundle();
                    data.putString("result", "success");
                    Intent intent=getIntent();
                    intent.putExtras(data);
                    setResult(1, intent);
                    finish(); // finish当前activity
                    overridePendingTransition(R.anim.in_from_left,
                            R.anim.out_from_right);
                }
            }.start();
        }
    }
};
时间: 2024-08-01 22:46:49

Android Intent参数传递的相关文章

Android activity 参数传递

Android activity 参数传递 经过网上的资料收集终于测试成功,可以两个Activity 之间相互传递参数.先将部分代码帖出来(关键代码已注释),仅供参考. 第一个activity:activity_main 导入相关包 import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnCl

android之android.intent.category.DEFAULT的用途和使用

转载(http://blog.csdn.net/jason0539/article/details/10049899) 1.要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent. Explicit Intent明确的指定了要启动的Acitivity ,比如以下Java代码: Intent intent= new Intent(this, B.class): Implicit Intent没有明确的指定要启动哪个Activity

Android Intent 意图作用

Intent分为两大类: (1)显性的(Explicit) (2)隐性的(Implicit) 对于隐性意图,在某些时候, 应用程序只是想启动具有某种特征的组件, 并不想和某个特定的组件耦合. 使用Intent可以方便的达到这种高层次解耦的目的.(在模块间的组件启动) intent定位事件的目的地: (1)种类(category),比如我们常见的 LAUNCHER_CATEGORY 就是表示这是一类应用程序. (2)类型(type),在前面的例子中没用过,表示数据的类型,这是隐性Intent定位目

转android intent action 介绍大全

一些常用的Intent: Uri Action 功能 备注 geo:latitude,longitude Intent.ACTION_VIEW 打开地图应用程序并显示指定的经纬度   geo:0,0?q=street+address Intent.ACTION_VIEW 打开地图应用程序并显示指定的地址   http://web_address Intent.ACTION_VIEW 打开浏览器程序并显示指定的URL   https://web_address Intent.ACTION_VIEW

android细节之android.intent.category.DEFAULT的使用

我们知道,实现android的Activity之间相互跳转需要用到Intent, Intent又分为显式Intent和隐式Intent, 显式Intent很简单,比如我在FirstActivity中想跳转到SecondActivity,只需要直接声明就行了: Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 而在使用隐式Intent实现Activity之间跳转的时候,并没有明确指定要打开哪个activity

android.intent.category.DEFAULT

我们需要什么时候加android.intent.category.DEFAULT呢? 1.要弄清楚这个问题,首先需要弄明白什么是implicit(隐式) intent什么是explicit(显示) intent. Explicit Intent明确的指定了要启动的Acitivity ,比如以下Java代码:              Intent intent= new Intent(this, B.class) Implicit Intent没有明确的指定要启动哪个Activity ,而是通过

Android intent action大全

android.intent.action.ALL_APPSandroid.intent.action.ANSWERandroid.intent.action.ATTACH_DATAandroid.intent.action.BUG_REPORTandroid.intent.action.CALLandroid.intent.action.CALL_BUTTONandroid.intent.action.CHOOSERandroid.intent.action.CREATE_LIVE_FOLDE

android Intent的startActivityForResult()方法

startActivityForResult() 之前学习了利用Intent跳转页面的同时传值,但有的时候需要从跳转到的页面返回所需要的值(如修改了用户信息,需要返回修改的信息),通俗的意思就是A.Activity跳转到B.Activity,在A.Activity中要自动获取到B.Activity返回的数据. 1.介绍几个主要的方法: 1 MainActivity.this.startActivityForResult(intent1, 1); 第一个参数intent1就不介绍了,第二个参数的值

Android intent 传值不更新的原因和解决办法

当 Activity 的启动模式是 singleTask 或者 singleInstance 的时候.如果使用了 intent 传值,则可能出现 intent 的值无法更新的问题.也就是说每次 intent 接收到的值都是第一次接到的值.因为 intent 没有被更新.想要更新需要做两件事情. 1. 发送方 Activity,加上一句话 ? 1 PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent,Pen