startActivityForResult用于启动其他指定的活动,并期待从指定的活动返回的结果。
启动其他活动并返回结果进程:
当前,ActivityA必须调用与startactivityforresult (intrequestcode,Intent intent )请求调用参数intent相对应的ActivityB。 请求代码是requestcode,需要改写onactivityresuunt int result code,Intent intent ),启动的ActivityB返回结果时,设置result,intent
请求代码和结果代码
一个Activity包含多个按钮,可以调用多个startActivityForResult方法来打开不同的Activity处理业务。 这些新的Activity结束时,将调用上一个Activity的onActivityResult方法。 为了知道该方法是由哪个请求结果触发的,requestCode标签可用于使用resultCode标签来知道所返回的数据来自该新的Activity
例如,第二个Activity让用户选择信息,并将结果返回到第一个Activity
MainActivity.java
package com.HUST.activityforresult;
导入安卓. app.activity;
导入安卓. content.intent;
导入安卓. OS.bundle;
导入安卓. view.menu;
import android.view.MenuItem;
导入安卓. view.view;
导入安卓. view.view.onclick listener;
import Android .构件. button;
import Android .构件. edittext;
publicclassmainactivityextendsactivity {
Button bn;
编辑编辑;
@Override
protectedvoidoncreate (边界维护实例state )。
super.oncreate (savedinstancestate;
setcontentview (r.layout.activity _ main;
bn=(Button ) findviewbyid ) r.id.Button1;
edit=(edittext ) findviewbyid ) r.id.edittext1;
bn.setonclicklistener (newonclicklistener ) )。
@Override
公共语音在线(查看) {
//todo自动- generated method stub
//创建必须与目标活动对应的英特尔
intent intent=new intent (main activity.this,CityActivity.class );
//启动指定的Activity,等待返回的结果。 0是请求代码。 用于表示这个要求
startactivityforresult(intent,0 );
}
);
}
//重写此方法以回调的形式获取Activity返回的结果
@Override
protectedvoidonactivityresult (intrequestcode,int resultCode,Intent data ) {
//todo自动- generated method stub
super.onactivityresult (请求代码,结果代码,数据);
//如果请求代码和结果代码都为0,即处理的特定结果
if (请求代码==0result代码==0) {
获取绑定数据
Bundle bundle=data.getExtras (;
string city=bundle.getstring (' city );
//修改编辑框的内容
>edit.setText(city);}
}
CityActivity.java
package com.hust.activityforresult;
import android.app.ExpandableListActivity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.TextView;
public class CityActivity extends ExpandableListActivity {
//定义省份
private String[] provinces={
"广东","湖北","河南"
};
//定义城市
private String[][] cities={
{"广州","深圳","珠海","惠州"},
{"武汉","襄阳","随州","十堰"},
{"郑州","平顶山","信阳","驻马店"}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_city);
ExpandableListAdapter ad=new BaseExpandableListAdapter(){
private TextView getTextView(){
AbsListView.LayoutParams lp=new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,64);
TextView textview =new TextView(CityActivity.this);
textview.setLayoutParams(lp);
textview.setTextSize(16);
textview.setGravity(Gravity.CENTER_VERTICAL|Gravity.LEFT);
textview.setPadding(30, 5, 0, 5);
return textview;
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return provinces.length;
}
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return cities[groupPosition].length;
}
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return provinces[groupPosition];
}
@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return cities[groupPosition][childPosition];
}
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
TextView text=getTextView();
text.setTextColor(Color.RED);
text.setText(getGroup(groupPosition).toString());
return text;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
TextView text=getTextView();
text.setText(getChild(groupPosition, childPosition)
.toString());
return text;
}
//主要在给子选项设置监听器时,这个函数一定要返回true,否则监听器没有用
@Override
public boolean isChildSelectable(int groupPosition,
int childPosition) {
// TODO Auto-generated method stub
return true;
}
};
//设置adapter
setListAdapter(ad);
//为每个子选项添加监听器
getExpandableListView().setOnChildClickListener(new OnChildClickListener(){
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
// TODO Auto-generated method stub
//获取启动该Activity之前的Activity对应的Intent
Intent intent=getIntent();
intent.putExtra("city", cities[groupPosition][childPosition]);
//设置该Activity的结果码,并设置结束之后退回的Activity
CityActivity.this.setResult(0, intent);
//结束本Activity
CityActivity.this.finish();
return false;
}
});
}