zranye 发表于 2013-1-30 04:17:31

【初学android】讨论Activity

初学android,对比着J2EE来理解。
个人理解 startActivityForResult(intent, REQUEST_CODE)发出等待Resul的请求,并通过 第二个参数REQUEST_CODE作为比对标识,这时候线程(这里是Activity)挂起,不马上destroy,而是执行stop(或者pause吧,暂时不能理解太多)方法,等待result返回,调用下面的onActivityResult()方法。在调用onActivityResult()方法时,用第一个参数标识由哪一个activity发出请求,并用第二个参数标识由哪一个activity响应返回结果,第三个参数intent用来作数据的通信,即传递数据,类似集合,再通过getExtras()的方法,得到类似map的键值对的bundle来获取传递的数据。
public class IntentDemoActivity extends Activity {    /** Called when the activity is first created. */private Button mainBtn = null;public final static int REQUEST_CODE = 1;    @Override    public void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.main);      mainBtn = (Button)findViewById(R.id.mainBtn);      mainBtn.setOnClickListener(listener);    }    private OnClickListener listener = new OnClickListener() {      @Override    public void onClick(View v) {    Intent intent = new Intent();    intent.setClass(IntentDemoActivity.this, SecondActivity.class);    intent.putExtra("str", "SecondActivity");      startActivityForResult(intent, REQUEST_CODE);    }    };@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if(requestCode == REQUEST_CODE){if(resultCode == SecondActivity.RESULT_CODE){Bundle bundle = data.getExtras();String str = bundle.getString("back");Toast.makeText(IntentDemoActivity.this, str, Toast.LENGTH_LONG).show();}}}    }
页: [1]
查看完整版本: 【初学android】讨论Activity