您的位置:首页 > 其它

[8]TabHost在TabHost中子Activity无法接收返回值

2015-10-17 14:13 225 查看
问题:在TabHost的子Activity中通过打开修改地址Activity获取新的位置信息,将新信息返回子Activity并更新其经纬度信息。

参考资料:

1、http://www.cnblogs.com/relinson/archive/2012/03/25/startActivityForResult.html

2、http://zhidao.baidu.com/question/2052260904706818147.html

看了资料1以后明白根本问题是因为TabHost这东西一直位于布局最上层。

一开始我想把TabHost往下移,就像WORD或者PPT一样,把TabHost置于底层,然而不得其法。

于是退而求其次,参考资料1依葫芦画瓢,然而还是不行。步骤2中getLocalActivityManager()方法是ActivityGroup中的方法,我没继承ActivityGroup,也没继承TabActivity,自然就没办法用这个方法。于是我就自己new了一个LocalActivityManager,然而还是不行。一设断点,发现原来是subActivity为空,也就是说getLocalActivityManager().getCurrentActivity()没取到值。我觉得这方法可能不是要继承ActivityGroup就是要继承TabActivity,然而我并不像继承这两个中的任何一个,所以我想了一个笨办法。这个笨办法不用细说了,看代码大家就都知道了。

PS:如果有更好的方法麻烦告知我一声,我也是困扰了两天走投无路了才出此下策。

1、子Activity

//以下是FormerActivity中的全局变量
private static final int REQUEST_CODE = 3;//大于0就好,作用是区别是哪个Activity回传的数据
private boolean isFromParent = false;//onResume时区分是否需要重新刷新
//以下代码放在准备调用startActivityForResult的方法中
Intent intent = new Intent(FormerActivity.this, LatterActivity.class);
isFromParent = true;
getParent().startActivityForResult(intent, REQUEST_CODE);
2、父Activity(即调用TabHost所在的布局文件的Activity)

private String latitude = null;//纬度
private String longitude = null;//经度

public String getLongitude() {
return longitude;
}

public void setLongitude(String longitude) {
this.longitude = longitude;
}

public String getLatitude() {
return latitude;
}

public void setLatitude(String latitude) {
this.latitude = latitude;
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) {
case RESULT_OK:
latitude = data.getStringExtra("latitude");
longitude = data.getStringExtra("longitude");
setLocationResult();
break;
case RESULT_CANCELED:
break;
default:
break;
}
}

public void setLocationResult(){
setLatitude(latitude);
setLongitude(longitude);
}
3、子Activity

@Override
protected void onResume() {
super.onResume();
if (isFromParent) {//判断是否从父Activity处获取经纬度,若获取,则更新当前经纬度信息
getLocationResult();
}
}

public void getLocationFromParent() {//从父Activity处获取经纬度
MainNativeActivity parentActivity = (PanrentActivity) FormerActivity.this.getParent();
parentActivity.setLocationResult();
String latitudeLR = parentActivity.getLatitude();
String longitudeLR = parentActivity.getLongitude();
if (latitudeLR != null && longitudeLR != null) {
longitude = longitudeLR;
latitude = latitudeLR;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: