Android项目最佳传值方案

【威哥说】听说昨天肾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项目最佳传值方案)