Android项目最佳传值方案

作者: 磨砺营 | 来源:发表于2016-09-09 14:01 被阅读464次

    【威哥说】听说昨天肾7出来了。作为Android开发,我确实比别人晚知道了一天。今天看到隔壁医院有些人护着肾的位置走出来。我才意识到肾7终于发布了,不过现在割肾的人少了好多。我其实特别想说:爱护身体,还是学Android吧。

    【思考】如果你可以免费学一门技术,你会咋选择?

    【正文】在实际项目开发中我们不可避免的要传值,两个界面传值并且还要返回值怎么处理?Google给我们封装了一个startActivityForResult方法,今天就给大家说下这个方法的使用步骤。

    首先如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity 关闭后会向前面的Activity传回数据,为了得到传回的数据,必须在前面的Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法。

    public class MainActivity extends Activity {

    private final static String TAG="MainActivity";

    @Override

    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    findViewById(R.id.button).setOnClickListener(new View.OnClickListener(){

    public void onClick(View v) {

    //为了得到新打开Activity关闭后返回的数据,需要使用startActivityForResult来跳转

    //这里第二个参数为请求码,可以根据业务需求自己编号,类型为int

    startActivityForResult(new Intent(MainActivity.this, OtherActivity.class), 1);

    }

    });

    }

    /**

    * 为了得到传回的数据,必须在前面的Activity中(指MainActivity类)重写onActivityResult方法

    *

    * requestCode 请求码,即调用startActivityForResult()传递过去的值

    * resultCode 结果码,结果码用于标识返回数据来自哪个新Activity

    */

    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    String result = data.getExtras().getString("result");//得到新Activity 关闭后返回的数据

    Log.i(TAG, result);

    }

    }

    当新Activity关闭后,新Activity返回的数据通过Intent进行传递,android平台会调用前面Activity 的onActivityResult()方法,把存放了返回数据的Intent作为第三个输入参数传入,在onActivityResult()方法中使用第三个输入参数可以取出新Activity返回的数据。

    然后使用startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新Activity关闭前需要向前面的Activity返回数据需要使用系统提供的setResult(int resultCode, Intent data)方法实现:

    public class OtherActivity extends Activity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.other);

    Button button=(Button)findViewById(R.id.button);

    button.setOnClickListener(new View.OnClickListener(){

    public void onClick(View v) {

    //这里要实例化intent,用来存放要返回的数据

    Intent intent = new Intent();

    //把返回数据存入Intent

    intent.putExtra("result", "My name is linjiqin");

    //设置返回数据,第一个参数为返回码, 可以根据业务需要自己定义,上面代码中使用到的一样都是1

    OtherActivity.this.setResult(1, intent);

    //关闭Activity

    OtherActivity.this.finish();

    }

    });

    }

    }

    这样当第二个activity关闭就会返回数据,系统会调用onActivityResult方法并把值传过来,然后就可以执行相关的业务。

    相关文章

      网友评论

        本文标题:Android项目最佳传值方案

        本文链接:https://www.haomeiwen.com/subject/akbeettx.html