1)在Android中startActivityForResult主要作用就是:
4.修改EditActivity代码如下
5.添加一个类BaseField.java用来存放“添加请求代码”、”添加结果代码“...
A-Activity需要在B-Activtiy中执行一些数据操作,而B-Activity又要将,执行操作数据的结果返回给A-Activtiy
2)接下来我将附加代码讲述
1.添加AddActivity和EditActivity
2.将主窗体MainActivity修改成代码如下
主要实现的功能是跳转到子Activity(AddActivity,EditActivity)并根据请求代码和结果代码获取子窗体的参数。
package com.example.androiddemo2;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
private Button addButton=null;
private Button editButton=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*跳转到AddActivity*/
addButton=(Button)findViewById(R.id.addButton);
addButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent addIntent=new Intent(MainActivity.this, AddActivity.class);
/*addRequest是一个“请求代码”应该大于等于0它将会在onActivityResult()中返回*/
startActivityForResult(addIntent, BaseField.AddRequest);
}
});
/*跳转到EditActivity*/
editButton=(Button)findViewById(R.id.editButton);
editButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent editIntent=new Intent(MainActivity.this,EditActivity.class);
Bundle bundle=new Bundle();
bundle.putString("username", "张三");
bundle.putString("password", "123456");
editIntent.putExtras(bundle);
/*editRequest是一个“请求代码”应该大于等于0它将会在onActivityResult()中返回*/
startActivityForResult(editIntent, BaseField.EditRequest);
}
});
}
/**
* 重写onActivityResult这个方法
* 是要等到AddActivity,EditActivity finish后才会执行的
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
/*添加请求代码和添加结果代码*/
if(requestCode==BaseField.AddRequest&&resultCode==BaseField.AddResult){
Bundle bundle=data.getExtras();
Log.i(BaseField.Tag, bundle.getString("message"));
}
/*修改请求代码和修改结果代码*/
if(requestCode==BaseField.EditRequest&&resultCode==BaseField.EditResult){
Bundle bundle=data.getExtras();
Log.i(BaseField.Tag, bundle.getString("message"));
}
super.onActivityResult(requestCode, resultCode, data);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
3.修改AddActivity代码如下
实现的功能是设置回传参数和结果代码并关闭Activity促使MainActivity调用onActivityResult方法
package com.example.androiddemo2;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class AddActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*设置回传参数和结果代码后finish Activity*/
Intent intent=new Intent();
intent.putExtra("message", "add success");
setResult(BaseField.AddResult, intent);
finish();
}
}
4.修改EditActivity代码如下
实现功能是获取MainActivity传过来的参数,然后设置回传参数和结果代码并关闭Activity促使MainActivity调用onActivityResult方法
package com.example.androiddemo2;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
public class EditActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*获取传递的参数*/
Bundle bundle=this.getIntent().getExtras();
Log.i(BaseField.Tag, bundle.getString("username"));
Log.i(BaseField.Tag, bundle.getString("password"));
/*设置回传参数和结果代码后finish Activity*/
Intent intent=new Intent();
intent.putExtra("message", "edit success");
setResult(BaseField.EditResult, intent);
finish();
}
}
5.添加一个类BaseField.java用来存放“添加请求代码”、”添加结果代码“...
具体代码如下
package com.example.androiddemo2;
public class BaseField {
/*添加请求代码*/
public static int AddRequest=101;
/*修改请求代码*/
public static int EditRequest=201;
/*添加结果代码*/
public static int AddResult=102;
/*修改结果代码*/
public static int EditResult=202;
public static String Tag="TAG";
}