安卓开发入门基础之Intent双向传递

2个XML布局

  • 布局构思:总体是一个垂直的线性布局
  • 再往里包含2个水平(横向)排列的线性布局
  • 一个水平的线性布局里面放个发送的文本框提示,还需要放一个输入框通过Intent发到另外一个activity
  • 另外一个水平线性布局里面放个接收的文本框提示,还需要放一个输入框通过Intent发到之前的activity
  • 2个XML里最下面都是一个确认按钮

Mainactivity1.java

  • 主要是获取需要发送信息的输入框、确认发送的按钮以及接收的文本框控件

  • 然后对按钮监听,并且使用Intent的putExtra设置传递键值对, 再使用startActivityForResult方法(为了一个结果)进行传输

  • 此处Intent的putExtra的"001"只是个字符串传输标记,“目的地”(此处为Mainactivity2.java)接收的时候才需要用到它来接收,建议自定义方便理解。例如:“发送内容”

  • "001"后面的sent1.getText().toString()则是需要传的字符串的值

  • Intent intent=new Intent(getApplicationContext(),Main2Activity.class);这句是实现Activity之间的跳转

  • startActivityForResult方法中的第二个参数0x01可以是自定义的,但是必须是一个整数,需要作为后面传递回来的接收判断条件

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    sent1 = (EditText) findViewById(R.id.sent1);
    surebtn = (Button) findViewById(R.id.sure);
    rece1 = (TextView) findViewById(R.id.receive1);
    surebtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(getApplicationContext(),Main2Activity.class);
            intent.putExtra("001",sent1.getText().toString());
            startActivityForResult(intent,0x01);
        }
    });
}
  • 并且重写onActivityResult方法(在本活动中的结果),主要是为了接收传回来的信息
  • 此处data是Intent创建的对象
  • 0x01是Mainactivity2接收Mainactivity1的值再反馈回来的信息,是一 一对应的
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==0x01){
        String extra = data.getStringExtra("002");
        rece1.setText(extra);
    }
}

Mainactivity2.java

  • 获取控件是必不可少的操作,类似Mainactivity1.java
  • getIntent().getStringExtra(“001”)实现取"001"内传输来的数据
  • setResult(RESULT_OK,intent);发送返回的结果(也是传值,类似一问一答里面的回应)
  • 调用finish()回到1的界面。
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    rece2 = (TextView) findViewById(R.id.receive2);
    rece2.setText(getIntent().getStringExtra("001"));

    sent2 = (EditText) findViewById(R.id.sent2);

    backbtn = (Button) findViewById(R.id.backto1btn);

    backbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent =new Intent(getApplicationContext(),MainActivity.class);
            intent.putExtra("002",sent2.getText().toString());
            setResult(RESULT_OK,intent);
            finish();
        }
    });
}

简陋效果图

安卓开发入门基础之Intent双向传递
安卓开发入门基础之Intent双向传递
安卓开发入门基础之Intent双向传递

上一篇:登录


下一篇:Android studio做简单ui第一篇