android的正向传值与反向传值

来源:互联网 发布:struct node什么意思 编辑:程序博客网 时间:2024/06/05 07:50

1> android的正向传值:
场景: 由当前的Activity,切换到另外一个Activity,并且携带一定的数据到另一个Activity;
主要通过Intent(意图)来实现
由MainActivity切换到LoginActivity,并携带一定的数据

package com.example.zxjk.mydemo;import android.content.Intent;import android.content.pm.LabeledIntent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity {    private Button button; //定义一个私有的成员变量    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //通过id取出按钮对象 然后给成员变量进行赋值        button = (Button) this.findViewById(R.id.button);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                /**第一种方式: 通过意图来启动一个窗口的 */                // 创建一个意图                Intent intent = new Intent(MainActivity.this,LoginActivity.class);                // 通过intent进行传值  调用putExtra进行复制                intent.putExtra("name","Tom");                intent.putExtra("age","22");                intent.putExtra("weight","60");                intent.putExtra("adress","南京");                Bundle bundle = new Bundle(); // 创建一个bundle对象                bundle.putString("code","1001");                intent.putExtra("bundle",bundle);                // 启动意图                startActivity(intent);                startActivity(intent,requestCode);        });    }}
package com.example.zxjk.mydemo;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class LoginActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //在XML文件当中加载视图 填充当前的窗口 一个窗口通常都会有一个布局文件与其相关联        setContentView(R.layout.activity_login);        //获取意图对象        Intent intent = getIntent();        // 取出意图对象中的具体数据 通过getExtra方法进行取值        String name = intent.getStringExtra("name");        int age = intent.getIntExtra("age",0);        String adress = intent.getStringExtra("adress");        Bundle bundle = intent.getBundleExtra("bundle");        String code = bundle.getString("code");    }}

2> Android的反向传值
场景:MainActivity>>LoginActivity>>MainActivity

在MainActivity重载onActivityResult方法 获取子窗口传递的数据:
MainActivity中:

 /** 获取从子窗口传递过来的数据 */    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if (requestCode == 1000 && resultCode == 1001){        }    }

requestCode 与 resultCode 通过这两个code可以实现两个特定窗口之间一一对应的传值

LoginActivity中:

Intent intent1 = new Intent();        // 设置回传意图        setResult(1001,intent1);        // 结束当前窗口的生命周期        finish();
0 1
原创粉丝点击