Activity 带回调启动与带结果返回

Activity 带回调启动与带结果返回


1.先理解一下相关的知识 Intent意图

  1. Intent(Context packageContext,,Class cla)用于创建显示意图对象
  2. Intent(String action):用于创建隐式意图对象
  3. putExtra(String name ,Xxx value):保存额外数据
  4. XxxData(Uri data):设置特定格式的URL数据
    5.

Activity:活动
1.startActivity(Intent intent):一般启动Activity
2.startActivityForResult(int reqCode,Intent intent):带回调启动activity
3.onActivityResult(int reCode,int resultCode,Intent data):回调方法
4.setResult(int resultCode,Intent data):设置要返回的结果
5.finish():结束当前activity
6.getIntent():得到启动Activity的意图

下面来实现一个小例子:
他的功能很简单:大概就是在第一个界面输入的内容传到第二个界面,在第二界面改变内容,又传回到第一个界面。
MainActivity类

   @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    editText= (EditText) findViewById(R.id.editText);
    bnt1= (Button) findViewById(R.id.next_activity);
    btn2= (Button) findViewById(R.id.back);
    bnt1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //1创建Intent对象(显示)
            Intent intent=new Intent(MainActivity.this,SecondcActivity.class);
            //2通过Iintent携带额外数据
            //所以我们来获取输入框输入的内容 editText他的返回值类型是string
            String message=editText.getText().toString();
            intent.putExtra("MESSAGE",message);//(name.value)键值对 name是标识。随便定义,这里点定义为MESSAGE,它是从哪里来呢,就是我们前面的输入框
            startActivity(intent);
        }
    });
    //带回调启动的按钮
    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //创建Intent 对象
            Intent intent=new Intent(MainActivity.this,SecondcActivity.class);
            //2通过intent携带额外数据
            String message1=editText.getText().toString();
            intent.putExtra("MESSAGE1",message1);
            //3带回调启动activity  第二个参数需要一个请求码,这里随便定义一个请求码
            int requestCode=1;
            startActivityForResult(intent,requestCode);

        }
    });


}
//一般方法是调用,回调方法重写,所以我们就在这里重写这个回调方法,写好之后先不理他,我们切换到另一个activity

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    //super.onActivityResult(requestCode, resultCode, data);他里面没有代码,可以不用
    //三个参数:int requestCode, int resultCode, Intent data:分别表示结果请求码,结果码 ,data就是我们刚刚在另一个activity保存的data
    /**
     * 1判断code 2 从data 中取出数据 3显示
     */
    if (requestCode==1 && resultCode==2){
        String result=data.getStringExtra("RESULT");
        editText.setText(result);
    }

}

}
SecondcActivity类

package androi.industryplat.com.activitytest;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class SecondcActivity extends AppCompatActivity {
private EditText ed2;
private Button btn_Callback;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_secondc);
    ed2= (EditText) findViewById(R.id.et);
    btn_Callback= (Button) findViewById(R.id.btn_Callback);
    Intent intent= getIntent();//得到Intent对象
    String message=intent.getStringExtra("MESSAGE1");//根据key来取value ,他返回的就是一个message
    //然后把放入输入框,既然是要放入输入框,那么我们肯定要拿到输入框才行是吧
    ed2.setText(message);//给ed2设置值 就可以把第一个activity输入框输入的设置给SecondcActivity的输入框啦,并显示出来
    btn_Callback.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //返回结果之前先保存一个结果
            int resultCode=2;
            //准备一个带额外数据的intent对象
            Intent data=new Intent();
            //结果是从输入框中获取的
          String result=ed2.getText().toString();
            data.putExtra("RESULT",result);//key value
            //设置结果  data 通过RESULT 取得结果
            setResult(resultCode,data);
            finish();
        }
    });
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值