应用场景:

在主activity中点击进入到另一个activity搜索提示,获取经纬度,点确定返回到主activity,虽然说需求很奇葩,但是遇到了没办法。。

主要包含两部分,搜索提示+activity回退携带信息刷新主acitivity.

1>搜索提示 代码中贴到

2>activity进入到另一个activity,在另一个activity进行操作获取数据之后,回到到activity刷新页面:

主activity里面点击: 

  Intent intent = new Intent(MainActivity.this,
  SearchActivity.class);
  startActivityForResult(intent, 0);//相当于addFlag

  根据对生命周期的理解,重写

  

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
       try {
      if (data != null) {//获取子activity put的数据
      String str = data.getStringExtra("addressName");
      mAddress.setText(str);
    }
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }

=======

另一个activity里面:

  

/**
* 向主activity携带的地址信息
*/
  Intent intent = new Intent(SearchActivity.this,
                 MainActivity.class);
  intent.putExtra("addressName", str);//自己放数据

  setResult(RESULT_OK, intent);
  finish();

上完整代码:

MainActivity:

package com.onebelowzero2012;

import org.json.JSONObject;

import android.app.Activity;
import android.content.Intent;
import android.location.Location;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.location.LocationManagerProxy;
import com.amap.api.location.LocationProviderProxy;
import com.amap.api.services.geocoder.GeocodeResult;
import com.amap.api.services.geocoder.GeocodeSearch;
import com.amap.api.services.geocoder.GeocodeSearch.OnGeocodeSearchListener;
import com.amap.api.services.geocoder.RegeocodeResult;

public class MainActivity extends Activity implements
OnGeocodeSearchListener, AMapLocationListener {

// 定位
private LocationManagerProxy mLocationManger;
private TextView mTxt,mAddress;
private GeocodeSearch geocoderSearch;
//声明mLocationOption对象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
initLocation();
}
private void init() {
// TODO Auto-generated method stub
mTxt = (TextView) findViewById(R.id.tv_txt1);//自动定位的
mAddress = (TextView) findViewById(R.id.tv_txt2);
btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this,
SearchActivity.class);
startActivityForResult(intent, 0);
}
});
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);

try {
if (data != null) {//获取子activity put的数据
String str = data.getStringExtra("addressName");
mAddress.setText(str);
double longitude = data.getDoubleExtra("longitude", 0);
double latitude = data.getDoubleExtra("latitude", 0);
JSONObject location_info = new JSONObject();
location_info.put("__type", "GeoPoint");
location_info.put("latitude", latitude);
location_info.put("longitude", longitude);
Data.putData("location_info", location_info);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 初始化定位
*/
private void initLocation() {
// TODO Auto-generated method stub
mLocationManger = LocationManagerProxy.getInstance(getApplicationContext());
mLocationManger.requestLocationData(LocationProviderProxy.AMapNetwork,
60 * 1000, 15, this);
mHandler.postDelayed(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
stopLocation();
}
}, 15000);// 设置超过15秒还没有定位到就停止定位

geocoderSearch=new GeocodeSearch(getApplicationContext());
geocoderSearch.setOnGeocodeSearchListener(this);
}

/**
* 重写方法
*/
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub

}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub

}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub

}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub

}
@Override
public void onLocationChanged(AMapLocation amapLocation) {
// TODO Auto-generated method stub
if (amapLocation != null) {
Double Latitude = amapLocation.getLatitude();
Double Longitude = amapLocation.getLongitude();

Bundle bundle = amapLocation.getExtras();
String desc = "";
String cityCode = "";
if(null!=bundle){
desc = bundle.getString("desc");
}
String str = ("定位成功:(" + Longitude + "," + Latitude + ")"
+ "\n精 度 :" + amapLocation.getAccuracy() + "米"
+ "\n定位方式:" + amapLocation.getProvider() + "\n定位时间:"
+ AMapUtil.convertToTime(amapLocation.getTime()) + "\n城市编码:"
+ cityCode + "\n位置描述:" + desc + "\n省:"
+ amapLocation.getProvince() + "\n市:" + amapLocation.getCity()
+ "\n区(县):" + amapLocation.getDistrict() + "\n区域编码:" + amapLocation
.getAdCode());
String address="位置描述:" + desc + "省:"
+ amapLocation.getProvince() + "市:" + amapLocation.getCity()
+ "区(县):" + amapLocation.getDistrict() + "区域编码:" + amapLocation
.getAdCode();

String wk= amapLocation.getDistrict();
Log.i("打印的数据是是是是", address);
Log.i("打印的数据是是是是", address);
Log.i("打印的数据是是是是", address);
Log.i("打印的数据是是是是", address);

mTxt.setText(amapLocation.getCity());
}
}
@Override
public void onGeocodeSearched(GeocodeResult arg0, int arg1) {
// TODO Auto-generated method stub

}
@Override
public void onRegeocodeSearched(RegeocodeResult arg0, int arg1) {
// TODO Auto-generated method stub

}

private Handler mHandler=new Handler(){};
private Button btn;
/**
* 销毁定位
*/
private void stopLocation() {
if (mLocationManger != null) {
mLocationManger.removeUpdates(this);
mLocationManger.destory();
}
mLocationManger = null;
}
}

searchActivity:

package com.onebelowzero2012;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;

import com.amap.api.services.core.AMapException;
import com.amap.api.services.core.LatLonPoint;
import com.amap.api.services.geocoder.GeocodeAddress;
import com.amap.api.services.geocoder.GeocodeQuery;
import com.amap.api.services.geocoder.GeocodeResult;
import com.amap.api.services.geocoder.GeocodeSearch;
import com.amap.api.services.geocoder.GeocodeSearch.OnGeocodeSearchListener;
import com.amap.api.services.geocoder.RegeocodeResult;
import com.amap.api.services.help.Inputtips;
import com.amap.api.services.help.Inputtips.InputtipsListener;
import com.amap.api.services.help.Tip;
import com.amap.api.services.poisearch.PoiSearch;

public class SearchActivity extends Activity implements OnItemClickListener,
TextWatcher, OnGeocodeSearchListener, OnClickListener {

private int mCount;
private ListView lv;
private Drawable mDelete;
private EditText txtFind;
private int currentPage = 0;// 当前页面,从0开始计数
private Inputtips inputTips;
private SearchAdapter adapter;
private PoiSearch poiSearch;// POI搜索
private String keyWord = "";// 要输入的poi搜索关键字
ArrayList<Map<String, Object>> mList;
private static GeocodeSearch geocoderSearch;// 经纬度搜索
private ImageView ivBack, ivDelete, ivSearch;
private PoiSearch.Query query;// Poi查询条件类
// key和id
public static final String KEY[] = new String[] { "ivDaoH", "txtFind",
"ivCome" };

private final int ID[] = new int[] { R.id.iv_daoh, R.id.txtfind,
R.id.iv_come };

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);

initView();
}

/**
* 搜索
*/
private void doSearch() {
final String str = (String) mList.get(0).get(SearchActivity.KEY[1]);
Log.v("天安门广场吃泡面", str);
getLatlon(str);

mHandler.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
/**
* 向主activity携带的地址信息
*/
Intent intent = new Intent(SearchActivity.this,
MainActivity.class);
intent.putExtra("addressName", str);
intent.putExtra("longitude",
(Double) Data.getData("longitude"));
intent.putExtra("latitude",
(Double) Data.getData("latitude"));
setResult(RESULT_OK, intent);
finish();
}
}, 200);
}

private Handler mHandler = new Handler() {
};

/**
* 初始化view
*/
private void initView() {
// TODO Auto-generated method stub
lv = (ListView) findViewById(R.id.lv);
lv.setOnItemClickListener(this);

txtFind = (EditText) findViewById(R.id.txtfind);
ivDelete = (ImageView) findViewById(R.id.iv_delete);
ivSearch = (ImageView) findViewById(R.id.iv_search);
ivBack = (ImageView) findViewById(R.id.iv_back);

txtFind.addTextChangedListener(this);
ivDelete.setOnClickListener(this);
ivSearch.setOnClickListener(this);
ivBack.setOnClickListener(this);

mList = new ArrayList<Map<String, Object>>();
mCount = mList.size();
// 在初始化方法中设置图片的颜色
ivDelete.setImageResource(R.drawable.delete_item);
mDelete = this.getResources().getDrawable(
R.drawable.delete_item_unselector);
// 初始化中设置GeocodeSearch侦听 请求获取经纬度
geocoderSearch = new GeocodeSearch(SearchActivity.this);
geocoderSearch.setOnGeocodeSearchListener(this);
}

/**
* 获取地理坐标
*/
@Override
public void onGeocodeSearched(GeocodeResult result, int rCode) {
// TODO Auto-generated method stub
if (rCode == 0) {
if (result != null && result.getGeocodeAddressList() != null
&& result.getGeocodeAddressList().size() > 0) {

GeocodeAddress address = result.getGeocodeAddressList().get(0);
LatLonPoint latLonPoint = address.getLatLonPoint();
try {
double latitude = latLonPoint.getLatitude();
double longitude = latLonPoint.getLongitude();

Data.putData("latitude", latitude);
Data.putData("longitude", longitude);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} else {
ToastUtil.show(getApplicationContext(), "高德地图获取地理坐标出错!");
}
}

@Override
public void onRegeocodeSearched(RegeocodeResult arg0, int arg1) {
// TODO Auto-generated method stub

}

/**
* 文字输入提示
*/
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub

}

@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
String newText = s.toString().trim();
if (newText != null) {
adapter = new SearchAdapter(SearchActivity.this);
mList.clear();
adapter.setDataSource(mList);
lv.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
inputTips = new Inputtips(SearchActivity.this, new InputtipsListener() {

@Override
public void onGetInputtips(List<Tip> tipList, int rCode) {
if (rCode == 0) {// 正确返回
for (int i = 0; i < tipList.size(); i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put(KEY[0], R.drawable.iv_daoh);// 加入图片
map.put(KEY[1], tipList.get(i).getName());// 文字
map.put(KEY[2], R.drawable.iv_come);
mList.add(map);
}

adapter = new SearchAdapter(SearchActivity.this);
adapter.setDataSource(mList);
lv.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
});
try {
inputTips.requestInputtips(newText, "北京");// 第一个参数表示提示关键字,第二个参数默认代表全国,也可以为城市区号
} catch (AMapException e) {
e.printStackTrace();
}
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
final String str = (String) mList.get(position).get(
SearchActivity.KEY[1]);
getLatlon(str);

view.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
/**
* 向主activity携带的地址信息
*/
Intent intent = new Intent(SearchActivity.this,
MainActivity.class);
intent.putExtra("addressName", str);
intent.putExtra("longitude", (Double) Data.getData("longitude"));
intent.putExtra("latitude", (Double) Data.getData("latitude"));

setResult(RESULT_OK, intent);
finish();
}

}, 200);

}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.iv_search:
searchButton();
break;
case R.id.iv_delete:// 删除时清空数据
txtFind.setText("");
adapter = new SearchAdapter(SearchActivity.this);
mList.clear();
adapter.setDataSource(mList);
lv.setAdapter(adapter);
adapter.notifyDataSetChanged();

break;
case R.id.iv_back:// 点击回退到 fragment
this.finish();
break;
default:
break;
}
}

/**
* 点击搜索按钮
*/
public void searchButton() {
keyWord = ToastUtil.checkEditText(txtFind);
if ("".equals(keyWord)) {
ToastUtil.show(this, "请输入搜索关键字");
return;
} else {
// doSearchQuery();
doSearch();
}
}

/**
* 响应地理编码
*/
// 定于搜素城市编码 北京 010
public static String beijing = "010";

public static void getLatlon(final String name) {
GeocodeQuery query = new GeocodeQuery(name, beijing);// 第一个参数表示地址,第二个参数表示查询城市,中文或者中文全拼,citycode、adcode,
geocoderSearch.getFromLocationNameAsyn(query);// 设置同步地理编码请求
}
}

...

其他的就不贴了,见完整代码连接:

http://download.csdn.net/detail/onebelowzero2012/9374719

注意修改key,有错误还望指正,谢谢。

高德地图搜索提示获取信息回传activity刷新ui(二)的更多相关文章

  1. 高德地图-搜索服务-POI搜索

    高德地图-搜索服务-POI搜索 之前公司项目收货地址仿饿了么的收货地址,结果发现自己实现的关键字搜索和周边搜索,搜索到的poi列表跟饿了么的并不完全一样,后来考虑了下,应该是搜索的范围.类型之类的设置 ...

  2. 高德地图JS API获取经纬度,根据经纬度获取城市

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  3. 高德地图搜索功能以及清除搜索结果maker

    第一次写文章,写得不好各位看官见谅~ (pσ_σ)P首先这是一个vue里面的项目,高德地图api是直接CDN进来的,所以使用了global来调用,默认已经初始化了一个地图,为了实现一个输入框搜索功能和 ...

  4. 高德地图开发之获取SHA1码

    通过Android Studio获取SHA1 第一步.打开 Android Studio 的 Terminal 工具. 第二步.输入命令:keytool -v -list -keystore  key ...

  5. 高德地图开发者平台获取sHA1值

    一般在  Application 中进行初始化 /** * 获取高德SHA1值 * */ public static String sHA1(Context context) { try { Pack ...

  6. 手机端获取用户详细地理位置(高德地图API)

    项目开发需要获取用户详细的地理位置信息,使用了高德地图API接口 1,注册高德地图开发者账号获取开发者Key 2,页面调用 <script type="text/javascript& ...

  7. 关于ArcGis for javascript整合百度地图 天地图 高德地图进行搜索

    1.ArcGis for javascript整合百度地图搜索 1.1.首先引入百度地图的api <!-- 引入百度地图API --> <script type="text ...

  8. 百度地图、高德地图、Google地图等坐标系相关梳理

    1.地理坐标系与投影坐标系 地理坐标系也就是球面坐标系,是将本不是椭球体的地球进行椭球体化,从而形成球面坐标体系,国际标准的地理坐标系就是WGS-84坐标系: 只不过各个国家为了反映该国家所在区域地球 ...

  9. 【高德地图API】从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索

    原文:[高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索 摘要:地图服务,大家能想到哪些?POI搜素,输入提示,地址解析,公 ...

随机推荐

  1. JQuery判断子Iframe 加载完成的技术解决

    当需要我们给当前页面动态创建Iframe子框架的时候,并且同时需要操作子Iframe里的方法的时候,我们发现无法成功实现.这是为什么呢?经小程总结,发现子Iframe还没有来的及加载完成,就去执行里面 ...

  2. Java对数组对象进行排序

    下面是一组对数组对象进行排序的代码: package com.sun; import java.util.ArrayList; import java.util.Arrays; import java ...

  3. A题笔记(1)

    #include <stdlib.h> exit(); #include <stdlib.h> 是 exit(0) 必须的头文件 否则会出现 exit was not decl ...

  4. 小白偶遇Sublime Text 3

    sublime text3号称神一样的编辑器,主要归功于它丰富的插件所带来的可扩展性.以前曾经抱着玩一玩的心态下载了sublime ,没有插件的sublime 很快被我扔到一边.在用过很多的编辑器后, ...

  5. Lucene的Query类介绍

    把Lucene的查询当成sql的查询,也许会笼统的明白些query的真相了. 查询分为大致两类,1:精准查询.2,模糊查询. 创建测试数据. private Directory directory; ...

  6. 练习SignalR使用

    前言 随着Ajax越来越普遍的使用,前端页面跟后台服务也越来越密切的进行交互,实现前后端进行实时的消息传递尤为重要,一文件上传为例,现在普遍使用ajax上传然后通过flash进行文件进度的显示,这是目 ...

  7. 学习笔记-记ActiveMQ学习摘录与心得(一)

    这两天在看开源的MQ技术,趁着晚上安静,把这两天学的东西摘录下.在公司学东西效率真心捉鸡,心里总觉得别扭,拿了公司的钱不干活还在那学习,表示心情不淡定,效率不行啊...晚上时间是我的,下班还是蛮开心的 ...

  8. 精通 Oracle+Python,第 4 部分:事务和大型对象

    通过 Python 管理数据事务.处理大型对象 2010 年 3 月发布 事务包含一组 SQL 语句,这组 SQL 语句构成数据库中的一个逻辑操作,如转帐或信用卡支付操作.将 SQL 语句聚合到一个逻 ...

  9. 2016022610 - redis列表命令集合

    参考网址:http://www.yiibai.com/redis/redis_lists.html Redis列表是简单的字符串列表,排序插入顺序.您可以在头部或列表的尾部Redis的列表添加元素.列 ...

  10. phonegap 4.2 环境搭建 及 项目创建 运行

    安装Java 和 ADT 1.首先要安装java运行环境jdk,这个可以自行到官网下载.百度也有下载连接:( http://www.baidu.com/s?tn=baidu&ie=utf-8& ...