Android 之startActivityForReult 与 onActivityResult简介

来源:互联网 发布:linux 挂载分区成功 编辑:程序博客网 时间:2024/05/21 19:25

startActivityForResult与startActivity的不同之处在于
1、startActivity( ) 
仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。
2、startActivityForResult( ) 
可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activity,而当这个Text2Activity调用了finish()方法以后,程序会自动跳转回T1Activity,并调用前一个T1Activity中的onActivityResult( )方法。

 

相关函数:
startActivityForResult(Intent intent, Int requestCode)
setResut(int resultCode, Intent intent)
onActivityResult(int requestCode, int resultCode, Intent intent)


-----------MainActivity----------------------------------------------

public class MainActivity extends Activity {

TextView t;
public static final int REQUSET = 110;  //一定要>=0


@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  t = (TextView)findViewById(R.id.toOther);

  Button b = (Button)findViewById(R.id.toOther_btn);
  b.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
Intent in = new Intent();
in.setClass(getApplicationContext(), OtherActivity.class);
startActivityForResult(in, REQUSET);
    }
 });
}


/**--requestCode:请求码 resultCode:结果码,用于标识返回数据来自哪个新Activity */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);

  if(requestCode == REQUSET && resultCode == OtherActivity.RESULT_OK){
  String str = "帐号:"+data.getStringExtra(OtherActivity.KEY_USER_ID)+"\n密码:"
  +data.getStringExtra(OtherActivity.KEY_USER_PASSWORD);
  t.setText(str);
}

Toast.makeText(getApplicationContext(), "requestCode=" + requestCode + "::::" + "resultCode=" +resultCode, Toast.LENGTH_LONG).show();
}
}

------------------OtherActivity--------------------------------------------------------------------

public class OtherActivity extends Activity {

EditText eID ;
EditText ePASSWORD ;
Button b;

public static final String KEY_USER_ID = "USER_ID";
public static final String KEY_USER_PASSWORD = "USER_PASSWORD";

public static final int RESULT_OK = 111;

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_other);

  eID = (EditText)findViewById(R.id.user_ID);
  ePASSWORD = (EditText)findViewById(R.id.user_PASSWORD);

  b = (Button)findViewById(R.id.toMain_btn);
  b.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {
    Intent in = new Intent();
    in.putExtra(KEY_USER_ID, eID.getText().toString());
    in.putExtra(KEY_USER_PASSWORD, ePASSWORD.getText().toString());
    setResult(RESULT_OK,in);
    finish();
     }
});
     }
}





0 0
原创粉丝点击