Intent启动activity 传值和回传值

Intent 的用法大致可以分为两种,显式Intent 和隐式Intent

第一种

Intent intent= new Intent(MainActivity.this,NextActiviity.class);
//分散传值
intent.putExtra("name","jack");
intent.putExtra("age",23);
intent.putExtra("address","北京");;
//封装传值
Bundle bundle = new Bundle();
bundle.putSting("code","1001")
intent.putExtra("bundle",bundle)

//启动Activity
startActiviy(intent);

NextActiviity中提取值
Intent intent = getIntent();
String name = intent.getStringExtra("name");
Int age =intent.getIntExtra("age",0);
String address =intent.getStringExtra("address");

Bundle bundle =intent.getBoundleExtra("bundle");
String code = bundle.getString("code");

第二种

intent intent = new Intent();
intent.setClass(MainActivity.this,NextActiviity.class);

第三种
在清单文件中添加

<activity android: name = ".NextActiviity">
     <intent-filter>
         <action android :name = "com.example.anddriod_activity_state.nextActivity">
         </action>
         <category android:name ="android.intent.category.DEFAULT"></category>
     </intent-filter>
</activity>
Intent intent = new Intent("com.example.anddriod_activity_state.nextActivity");
startActiviy(intent);

第四种

Intent intent = new Intent();
intent.setAction("com.example.anddriod_activity_state.nextActivity");
startActiviy(intent);

第五种(使用ComponentName )

   Intent intent = new Intent();
//  ComponentName (组件名称)是用来打开其他应用程序中的Activity或服务的。
   ComponentName cn = new ComponentName(MainActivity.this,NextActivity.class);
   intent.setComponent(cn);

onActivityResult()方法带有三个参数,第一个参数requestCode,即我们在启动活动时传
入的请求码。第二个参数resultCode,即我们在返回数据时传入的处理结果。第三个参数data,
即携带着返回数据的Intent。由于在一个活动中有可能调用startActivityForResult()方法去启
动很多不同的活动,每一个活动返回的数据都会回调到onActivityResult()这个方法中,因此
我们首先要做的就是通过检查requestCode 的值来判断数据来源。确定数据是从
SecondActivity 返回的之后,我们再通过resultCode 的值来判断处理结果是否成功。最后从
data 中取值并打印出来,这样就完成了向上一个活动返回数据的工作。
{
回传值onActivityResult方法

public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,
                        NextActiivity.class);
                String a = editText1.getText().toString().trim();
                String b = editText2.getText().toString().trim();
                intent.putExtra("message", a+"+"+b+"="+"?");
                startActivityForResult(intent, 1000);// requestCode
                                                        // 请求码用于多窗口传值时,确定是那个窗口的回传值,整数类型
            }
        });

    }

// 回传值用onActivityResult启动activity,并回传值

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode==1000&&resultCode==1001){
            String result = data.getStringExtra("result");
            editText3.setText(result);
        }
    }
protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.next);

        button = (Button) findViewById(R.id.button1);
        edittext = (EditText) findViewById(R.id.editText1);

        textview = (TextView)this.findViewById(R.id.textView1);
        Intent intent = getIntent();
        String message = intent.getStringExtra("message");
        textview.setText(message);

        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                String value = edittext.getText().toString().trim();
                Intent intent = new Intent();
                intent.putExtra("result", value);
                //设置回传的意图p
                setResult(1001, intent);
                finish();//结束activity的生命周期

            }
        });
    }

}

欢迎关注我Github : @ 我的github

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值