Android活动在恢复时崩溃
这是我得到的错误:Android活动在恢复时崩溃,android,web-services,Android,Web Services,这是我得到的错误: 03-13 22:27:28.156: E/AndroidRuntime(1166): FATAL EXCEPTION: main 03-13 22:27:28.156: E/AndroidRuntime(1166): java.lang.RuntimeException: Unable to resume activity {com.androidpoiservice/com.androidpoiservice.ViewMapActivity}: android.view.
03-13 22:27:28.156: E/AndroidRuntime(1166): FATAL EXCEPTION: main
03-13 22:27:28.156: E/AndroidRuntime(1166): java.lang.RuntimeException: Unable to resume activity {com.androidpoiservice/com.androidpoiservice.ViewMapActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class fragment
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2575)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2603)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2089)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.app.ActivityThread.access$600(ActivityThread.java:130)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.os.Handler.dispatchMessage(Handler.java:99)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.os.Looper.loop(Looper.java:137)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.app.ActivityThread.main(ActivityThread.java:4745)
03-13 22:27:28.156: E/AndroidRuntime(1166): at java.lang.reflect.Method.invokeNative(Native Method)
03-13 22:27:28.156: E/AndroidRuntime(1166): at java.lang.reflect.Method.invoke(Method.java:511)
03-13 22:27:28.156: E/AndroidRuntime(1166): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-13 22:27:28.156: E/AndroidRuntime(1166): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-13 22:27:28.156: E/AndroidRuntime(1166): at dalvik.system.NativeStart.main(Native Method)
03-13 22:27:28.156: E/AndroidRuntime(1166): Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class fragment
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
03-13 22:27:28.156: E/AndroidRuntime(1166): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:256)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.app.Activity.setContentView(Activity.java:1867)
03-13 22:27:28.156: E/AndroidRuntime(1166): at com.androidpoiservice.ViewMapActivity.onResume(ViewMapActivity.java:67)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1184)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.app.Activity.performResume(Activity.java:5082)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2565)
03-13 22:27:28.156: E/AndroidRuntime(1166): ... 12 more
03-13 22:27:28.156: E/AndroidRuntime(1166): Caused by: java.lang.IllegalArgumentException: Binary XML file line #8: Duplicate id 0x7f050012, tag null, or parent id 0xffffffff with another fragment for com.google.android.gms.maps.MapFragment
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.app.Activity.onCreateView(Activity.java:4669)
03-13 22:27:28.156: E/AndroidRuntime(1166): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
03-13 22:27:28.156: E/AndroidRuntime(1166): ... 22 more
代码如下:
public class ViewMapActivity extends Activity {
private static String TAG = "View Map";
private String username;
private String password;
private String name;
private String type;
private String SOAP_ACTION;
private String METHOD_NAME;
private String NAMESPACE;
private String URL;
private double latitude;
private double longitude;
private static LatLng Point = new LatLng(21 , 57);
private GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_map);
}
@Override
protected void onResume() {
super.onResume();
setContentView(R.layout.activity_view_map);
Log.e(TAG,"Here");
SOAP_ACTION = getString(R.string.server)+"POIWebServer/POIWebService/getMapData";
METHOD_NAME = "getMapData";
NAMESPACE = getString(R.string.server)+"POIWebServer/POIWebService";
URL = getString(R.string.server)+"POIWebServer/POIWebService/POIWebService?WSDL";
LoginInfo log = new LoginInfo();
username=log.username;
password=log.password;
getLocation();
Thread networkThread = new Thread(){
@Override
public void run(){
try {
SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
String temp=username+"#"+password;
request.addProperty("unpass",temp);
temp=String.valueOf(latitude)+","+String.valueOf(longitude);
request.addProperty("pos",temp);
HttpTransportSE ht = new HttpTransportSE(URL);
ht.call(SOAP_ACTION, envelope);
final SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
final String responseStr = response.toString();
runOnUiThread (new Runnable(){
public void run(){
// try {
// if (googleMap == null) {
// googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
// }
// googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
String[] pois = responseStr.split("\\$");
for(int i=0;i<pois.length;i++){
String part=pois[i];
String[] poiData=part.split("#");
double poiX=Double.parseDouble(poiData[0]);
double poiY=Double.parseDouble(poiData[1]);
String type=poiData[2];
String name=poiData[3];
Log.e(TAG,part);
Point = new LatLng(poiX , poiY);
// Marker TP = googleMap.addMarker(new MarkerOptions().position(Point).title(name));
}
// } catch (Exception e) {
// e.printStackTrace();
// }
}
});
} catch(Exception e){
e.printStackTrace();
}
}
};
networkThread.start();
}
private void getLocation() {
// Get the location manager
LocationManager locationManager = (LocationManager)
getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
String bestProvider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(bestProvider);
LocationListener loc_listener = new LocationListener() {
public void onLocationChanged(Location l) {}
public void onProviderEnabled(String p) {}
public void onProviderDisabled(String p) {}
public void onStatusChanged(String p, int status, Bundle extras) {}
};
locationManager.requestLocationUpdates(bestProvider, 0, 0, loc_listener);
location = locationManager.getLastKnownLocation(bestProvider);
try {
latitude = location.getLatitude();
longitude = location.getLongitude();
} catch (NullPointerException e) {
latitude = -1.0;
longitude = -1.0;
}
}
公共类ViewMapActivity扩展活动{
私有静态字符串TAG=“查看地图”;
私有字符串用户名;
私有字符串密码;
私有字符串名称;
私有字符串类型;
私有字符串SOAP_动作;
私有字符串方法名称;
私有字符串名称空间;
私有字符串URL;
私人双纬度;
私人双经度;
专用静态车床点=新车床(21,57);
私人谷歌地图谷歌地图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u view\u map);
}
@凌驾
受保护的void onResume(){
super.onResume();
setContentView(R.layout.activity\u view\u map);
Log.e(标记“此处”);
SOAP_ACTION=getString(R.string.server)+“POIWebServer/POIWebService/getMapData”;
方法\u NAME=“getMapData”;
NAMESPACE=getString(R.string.server)+“POIWebServer/POIWebService”;
URL=getString(R.string.server)+“POIWebServer/POIWebService/POIWebService?WSDL”;
LoginInfo log=新的LoginInfo();
用户名=log.username;
password=log.password;
getLocation();
线程网络线程=新线程(){
@凌驾
公开募捐{
试一试{
SoapObject请求=新的SoapObject(名称空间、方法名称);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(请求);
字符串temp=username+“#”+密码;
request.addProperty(“unpass”,temp);
温度=字符串.valueOf(纬度)+“,”+字符串.valueOf(经度);
请求。添加属性(“pos”,临时);
HttpTransportSE ht=新的HttpTransportSE(URL);
ht.呼叫(SOAP_动作、信封);
最终SoapPrimitive响应=(SoapPrimitive)信封.getResponse();
最终字符串responsest=response.toString();
runOnUiThread(新的Runnable(){
公开募捐{
//试试{
//if(googleMap==null){
//googleMap=((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
// }
//setMapType(googleMap.MAP\u TYPE\u HYBRID);
字符串[]pois=responsest.split(\\$);
对于(int i=0;i我认为您不应该在onResume()
中设置内容视图。从那里删除它。您已经在onCreate()
中进行了设置。这就是它所属的位置。就是它了,谢谢!奇怪的是,尽管它没有使我的其他活动崩溃,但它不允许您运行setContentView两次。这就是问题所在。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0099cc"
tools:context="com.androidpoiservice.ViewMapActivity" >
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>