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();