I am using the Edit Text field in my application. when i click on it the soft keyboard appears.but when i click on the "DONE" button (which is on soft keyboard ),it should be disappear but it does not disappear.i set the input type as text in the layout file.I want to hide the soft keyboard when i press button. please help.Thanks in advance.
Here is my code.
public class locupdate extends MapActivity implements OnDoubleTapListener{
GeoPoint p,geoPoint;
MapView SearchMap;
List<Overlay> list;
MapController map_controller;
LocationManager locationManager;
Location location,update_location ;
MyLocationOverlay me;
Button go_btn,done;
String city;
int cid;
Double lat_update,lng_update;
EditText location_entered;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.bingmapupdate);
go_btn=new Button(getApplicationContext());
go_btn=(Button)findViewById(R.id.go_button);
location_entered=(EditText)findViewById(R.id.enterLocationforSearch);
location_entered.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
location_entered.setText("");
}
});
done=new Button(getApplicationContext());
done=(Button)findViewById(R.id.button_locationUpdateDone);
done.setEnabled(false);
done.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor=preferences.edit();
String memberid=preferences.getString("unique_userName", null);
String lat=Double.toString(lat_update);
String lang=Double.toString(lng_update);
editor.putString(memberid+"LATITUDE",lat);
editor.putString(memberid+"LONGITUDE",lang);
//editor.putLong(memberid+"LATITUDE",lat_update);
//editor.putLong(memberid+"LONGITUDE",lng_update);
editor.commit();
//editor.putString("Location", update_location);
//update the "lat_update" , "lng_update" and "update_location" with UID(cell_id)
Intent i=new Intent();
i.setClassName("some pkg name here", "some activity name here");
startActivity(i);
finish();
}
});
SearchMap= (MapView)findViewById(R.id.View_map);
//SearchMap.setTraffic(true);
SearchMap.setBuiltInZoomControls(true);
map_controller=SearchMap.getController();
SearchMap.setClickable(false);
map_controller.setZoom(10);
MapOverlay mapOverlay = new MapOverlay();
List<Overlay> listOfOverlays = SearchMap.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
geoPoint=new GeoPoint((int)(location.getLatitude()*1e6),(int)(location.getLongitude()*1e6));
p=geoPoint;
// map_controller.animateTo(geoPoint);
// SearchMap.invalidate();
go_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
location_entered=new EditText(getApplicationContext());
location_entered=(EditText)findViewById(R.id.enterLocationforSearch);
String area=location_entered.getText().toString();
BingMapLocationUpdateActivity.this.changeMap(area);
SearchMap.setClickable(true);
}
});
}
protected class MapOverlay extends com.google.android.maps.Overlay {
@Override
public boolean draw(Canvas canvas,MapView map,boolean shadow,long when){
p=geoPoint;
//map_controller.animateTo(geoPoint);
Paint paint=new Paint();
super.draw(canvas, map, shadow);
Point myScreenCoords = new Point();
map.getProjection().toPixels(p, myScreenCoords);
paint.setStrokeWidth(1);
paint.setARGB(255, 255, 255, 255);
paint.setStyle(Paint.Style.STROKE);
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.marker);
canvas.drawBitmap(bmp, myScreenCoords.x, myScreenCoords.y, paint);
canvas.drawText("I am here...", myScreenCoords.x, myScreenCoords.y, paint);
return true;
}
@Override
public boolean onTouchEvent(MotionEvent event,MapView SearchMap)
{
//Toast.makeText(BingMapLocationUpdateActivity.this,
// "Touch Event Listener called",
// Toast.LENGTH_SHORT).show();
SearchMap.setClickable(true);
drawMarker(event);
done.setEnabled(true);
return false;
}
}/*--------------------------------------end of overlay class------------------------------------*/
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
@Override
protected void onDestroy() {
super.onStop();
}
@Override
public boolean onDoubleTap(MotionEvent event) {
drawMarker(event);
Toast.makeText(BingMapLocationUpdateActivity.this,
"onDoubleTap called",
Toast.LENGTH_LONG).show();
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent event) {
drawMarker(event);
Toast.makeText(BingMapLocationUpdateActivity.this,
"onDoubleTapEvent called",
Toast.LENGTH_LONG).show();
return false;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent event) {
// TODO Auto-generated method stub
drawMarker(event);
Toast.makeText(BingMapLocationUpdateActivity.this,
"Single Tap Event Listener called",
Toast.LENGTH_LONG).show();
return false;
}
/*-------------------------------------------get clicked location and draw marker---------------------------*/
public void drawMarker(MotionEvent event){
GeoPoint p = SearchMap.getProjection().fromPixels((int) event.getX(),(int) event.getY());
//Toast.makeText(getBaseContext(),p.getLatitudeE6() / 1E6 + "," +p.getLongitudeE6() /1E6 ,Toast.LENGTH_SHORT).show();
/*save these latitude and longitude*/
lat_update=p.getLatitudeE6() / 1E6;
lng_update=p.getLongitudeE6() /1E6;
//lat_update=(long)(p.getLatitudeE6() / 1E6);
//lng_update=(long)(p.getLongitudeE6() /1E6);
int X = (int)event.getX();
int Y = (int)event.getY();
geoPoint = SearchMap.getProjection().fromPixels(X, Y);
//map_controller.animateTo(geoPoint);
//int lac = cellLocation.getLac();
// me = new MyLocationOverlay(getApplicationContext(), SearchMap);
getLocationName(p);
}
/*-----------------------------------getLocationName method----------------------------------------*/
public void getLocationName(GeoPoint point_city){
float latitude = point_city.getLatitudeE6() / 1000000F;
float longitude = point_city.getLongitudeE6() / 1000000F;
location.setLatitude(latitude);
location.setLongitude(longitude);
Geocoder gcd = new Geocoder(this,Locale.getDefault()) ;
List<Address> addresses = null;
try {
addresses = gcd.getFromLocation(point_city.getLatitudeE6() / 1E6 , point_city.getLongitudeE6() /1E6, 1);
//addresses = gcd.getFromLocation(latitude,longitude,5);
if (addresses.size() > 0)
city=addresses.get(0).getAddressLine(0);
String state=addresses.get(0).getAddressLine(1);
String country=addresses.get(0).getAddressLine(2);
String sb;
sb=city+""+state+""+country;
//Toast.makeText(getApplicationContext(),sb,Toast.LENGTH_SHORT).show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
location_entered.setText(city);
/*save city in shared preferences*/
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor=preferences.edit();
editor.putString("city",city);
editor.commit();
}
/*-------------------------------------------Change Map Method---------------------------------------*/
public void changeMap(String area)
{
GeoPoint myLocation=null;
double lat = 0;
double lng = 0;
try
{
Geocoder g = new Geocoder(this, Locale.getDefault());
List<Address> result=g.getFromLocationName(area,5);
if(result.size()>0){
//Toast.makeText(BingMapLocationUpdateActivity.this, "country: " + String.valueOf(result.get(0).getCountryName()), Toast.LENGTH_SHORT).show();
lat = result.get(0).getLatitude();
lng = result.get(0).getLongitude();
myLocation=new GeoPoint((int)(lat*1e6),(int)(lng*1e6));
map_controller.animateTo(myLocation);
}
else{
Toast.makeText(BingMapLocationUpdateActivity.this, "record not found", Toast.LENGTH_SHORT).show();
return;
}
}
catch(IOException io)
{
Toast.makeText(BingMapLocationUpdateActivity.this, "Connection Error", Toast.LENGTH_SHORT).show();
}
//Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);
map_controller.setZoom(12);
//SearchMap.invalidate();
}
}
my layout file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg"
android:orientation="vertical" >
<TextView
android:id="@+id/bingmapupdate_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="#FFFFFF"
android:text="Google Maps"
android:textColor="#ff000000" >
</TextView>
<EditText
android:id="@+id/enterLocationforSearch"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:layout_below="@+id/bingmapupdate_label"
android:layout_marginTop="30dp"
android:layout_toLeftOf="@+id/go_button"
android:layout_toRightOf="@+id/enterLocation_label"
android:inputType="text"
android:singleLine="true"
android:text="search" >
</EditText>
<com.google.android.maps.MapView
android:id="@+id/View_map"
android:layout_width="fill_parent"
android:layout_height="250dp"
android:layout_alignParentLeft="true"
android:layout_below="@+id/enterLocationforSearch"
android:apiKey="GOOGLE_API_KEY" >
</com.google.android.maps.MapView>
<Button
android:id="@+id/go_button"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/enterLocationforSearch"
android:layout_alignBottom="@+id/enterLocationforSearch"
android:layout_alignParentRight="true"
android:background="@drawable/btn_ng"
android:text="Go" >
</Button>
<Button
android:id="@+id/button_locationUpdateDone"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="@drawable/btn_ng"
android:text="DONE" >
</Button>
<TextView
android:id="@+id/enterLocation_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/enterLocationforSearch"
android:layout_alignBottom="@+id/enterLocationforSearch"
android:layout_marginLeft="20dp"
android:text="Enter City"
android:textColor="#111111" >
</TextView>
</RelativeLayout>