问题描述
|
在我的应用程序中,我使用的是地图视图,该视图显示了我当前位置附近的地点。如果用户单击地图图钉,则会显示有关该地点的详细信息。为了显示详细信息,我使用了一些动画部分。
因为当用户单击隐藏动画时,我想再次显示上一张地图。为显示动画,我已经设置了内容视图,并且当用户单击隐藏动画时,我再次从主活动中调用该函数(创建时)
因此,当我调用该函数时,它在mapview上给了我空指针异常。
请帮忙!!!
这是我的代码
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
// searchButton=(Button)findViewById(R.id.searchId);
// searchButton.setOnClickListener(this);
// nearestButton=(Button)findViewById(R.id.nearestId);
// nearestButton.setOnClickListener(this);
url1=ongetUrl();
new FetchTask(FindFishActivity.this,url1).execute(null);
}
private class FetchTask extends AsyncTask<Object,Object,Object>
{
ProgressDialog progressDialog;
Context ctx;
String str_url;
public FetchTask(Context mcontext,String str)
{
this.ctx=mcontext;
this.str_url=str;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog=ProgressDialog.show(FindFishActivity.this,\"Loading Data\",\"Please wait...\");
}
@Override
protected Object doInBackground(Object... params)
{
String res_str=onWebService(str_url);
parse(res_str);
return true;
}
@Override
protected void onPostExecute(Object result) {
super.onPostExecute(result);
onMapDisplay();
progressDialog.dismiss();
}
public void onMapDisplay() {
String lakeNameString;
setContentView(R.layout.mapview);
mapView=(MapView)findViewById(R.id.mapview);
// if(mapView==null)
// {
// MapView view=new MapView(FindFishActivity.this,\"0pPZGIF27HwAISdkPQhUWYj12n5N63e-vAbun1g\");
// setContentView(R.layout.mapview);
// }
mapView.setStreetView(true);
mapView.setSatellite(false);
mapController = mapView.getController();
mapView.setBuiltInZoomControls(true);
mapOverlays=mapView.getOverlays();
drawable=FindFishActivity.this.getResources().getDrawable(R.drawable.pushpin4);
myOverlays=new MyOverlays(drawable,FindFishActivity.this);
for(int i=0;i<latitude.size();i++)
{
if(!latitude.get(i).equals(\"\"))
{
lat=Double.parseDouble(latitude.get(i));
latitudearr.add(lat);
}
}
for(int i=0;i<longitude.size();i++)
{
if(!longitude.get(i).equals(\"\"))
{
lon=Double.parseDouble(longitude.get(i));
longitudearr.add(lon);
}
}
for(int i=0;i<lakeNameList.size();i++)
{
if(!lakeNameList.get(i).equals(\"\"))
{
lakeNameString=lakeNameList.get(i);
}
}
for(int k=0;k<latitudearr.size();k++)
{
startPoint=new GeoPoint((int)(latitudearr.get(k) * 1E6),(int)(longitudearr.get(k) * 1E6));
mapController.animateTo(startPoint);
overlayItem=new OverlayItem(startPoint,\"\"+lakeNameList.get(k).toString(),\"\"+lDescription.toString());
myOverlays.addOverlay(overlayItem);
mapOverlays.add(myOverlays);
mapController.setZoom(6);
mapView.invalidate();
}
}
并用于显示动画部分
public void onShowInfo() {
setContentView(R.layout.tutorial5);
// LayoutInflater inflater=(LayoutInflater)FindFishActivity.this.getSystemService( Context.LAYOUT_INFLATER_SERVICE);
// View c=inflater.inflate(R.layout.tutorial5,(ViewGroup) findViewById(R.id.linearlayoutID));
transparentPanel=(TransparentPanel)findViewById(R.id.popup_window);
transparentPanel.setVisibility(View.VISIBLE);
transparentPanel.startAnimation(animShow);
final Button hideButton = (Button)findViewById(R.id.hide_popup_button);
hideButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
transparentPanel.startAnimation(animHide);
transparentPanel.setVisibility(View.GONE);
String s=FindFishActivity.this.ongetUrl();
new FetchTask(FindFishActivity.this,s).execute(null);
}
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)