简体   繁体   English

为什么我的Android应用崩溃了?

[英]Why is my Android app Crashing?

My android app keeps crashing but there aren't any errors. 我的android应用不断崩溃,但没有任何错误。 Heres the codes. 这是代码。

LocationActivity.java UPDATED LocationActivity.java已 更新

package com.marakana.tutomaps;

import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.TabHost;

public class LocationActivity extends TabActivity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec1, spec2, spec3;  // Resusable TabSpec for each tab
    Intent intent1, intent2, intent3;  // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent1 = new Intent().setClass(this, HaffActivity.class);

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec1 = tabHost.newTabSpec("Haff").setIndicator("Haff",
                      res.getDrawable(R.drawable.ic_tab_haff))
                  .setContent(intent1);
    tabHost.addTab(spec1);

    // Do the same for the other tabs
    intent2 = new Intent().setClass(this, MapsActivity.class);
    spec2 = tabHost.newTabSpec("Maps").setIndicator("Maps",
                      res.getDrawable(R.drawable.ic_tab_maps))
                  .setContent(intent2);
    tabHost.addTab(spec2);

    intent3 = new Intent().setClass(this, ProfileActivity.class);
    spec3 = tabHost.newTabSpec("Profile").setIndicator("Profile",
                      res.getDrawable(R.drawable.ic_tab_profile))
                  .setContent(intent3);
    tabHost.addTab(spec3);

    tabHost.setCurrentTab(2);
}
}

Here is the main layout file. 这是主布局文件。 UPDATED * main.xml * 更新 * main.xml *

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout android:orientation="vertical"
        android:layout_width="fill_parent"      android:layout_height="fill_parent">
        <View android:layout_width="fill_parent" android:layout_height="0.5dip"
            android:background="#000" />
        <TabWidget android:id="@android:id/tabs"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:layout_marginLeft="0dip" android:layout_marginRight="0dip" />
        <View android:layout_width="fill_parent" android:layout_height="2dip"
            android:background="#696969" />
        <View android:layout_width="fill_parent" android:layout_height="2dip"
            android:background="#000" />
        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_width="fill_parent" android:layout_height="fill_parent" />
    </LinearLayout>
</TabHost>

Heres the manifest file UPDATED 继承清单文件已更新

 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.marakana.tutomaps"
  android:versionCode="1"
  android:versionName="1.0">
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".LocationActivity"
              android:label="@string/app_name">
        <intent-filter>
                    <uses-library android:name="com.google.android.maps" />
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

<activity android:name=".HaffActivity">
</activity>

<activity android:name=".MapsActivity">
</activity>

<activity android:name=".ProfileActivity">
</activity>

</application>

MapsActivity.java MapsActivity.java

   package com.marakana.tutomaps;

   import java.io.IOException;
   import java.util.List;

   import android.location.Address;
   import android.location.Geocoder;
   import android.location.Location;
   import android.location.LocationListener;
   import android.location.LocationManager;
   import android.os.Bundle;
   import android.util.Log;
   import android.widget.TextView;

   import com.google.android.maps.GeoPoint;
   import com.google.android.maps.MapActivity;
   import com.google.android.maps.MapController;
   import com.google.android.maps.MapView;

   public class MapsActivity extends MapActivity implements LocationListener {

private static final String TAG = "MapsActivity";

LocationManager locationManager;
Geocoder geocoder;
TextView locationText;
MapView map;    
MapController mapController;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    locationText = (TextView)this.findViewById(R.id.lblLocationInfo);
    map = (MapView)this.findViewById(R.id.mapview);
    map.setBuiltInZoomControls(true);

    mapController = map.getController();
    mapController.setZoom(16);

    locationManager = (LocationManager)this.getSystemService(LOCATION_SERVICE);

    geocoder = new Geocoder(this);

    Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    if (location != null) {
        Log.d(TAG, location.toString());
        this.onLocationChanged(location);   
    }
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    locationManager.removeUpdates(this);
}

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 10, this);
}

@Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}

@Override
public void onLocationChanged(Location location) {
    // TODO Auto-generated method stub
    Log.d(TAG, "onLocationChanged with location " + location.toString());
    // Displays lat, long, altitude and bearing
    String text = String.format("Lat:\t %f\nLong:\t %f\nAlt:\t %f\nBearing:\t %f", location.getLatitude(), location.getLongitude(), location.getAltitude(), location.getBearing());
    this.locationText.setText(text);

    try {
        // This gets a list of addresses 
        List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 10);
        for (Address address : addresses) {
            this.locationText.append("\n" + address.getAddressLine(0));
        }

        // Convert latitude and longitude into int that the GeoPoint constructor can understand
        int latitude = (int)(location.getLatitude() * 1000000);
        int longitude = (int)(location.getLongitude() * 1000000);

        GeoPoint point = new GeoPoint(latitude,longitude);
        mapController.animateTo(point);

    } catch (IOException e) {
        Log.e("LocateMe", "Could not get Geocoder data", e);
    }
}

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

}

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

}

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

}
   }

Please help me. 请帮我。

Have you add to your AndroidManifest.xml : 您是否已添加到AndroidManifest.xml

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".LoadingActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity> 

    <activity android:name="HaffActivity"
    </activity>

    <activity android:name="MapsActivity"
    </activity>

    <activity android:name="ProfileActivity"
    </activity>

</application> 

Because if you have different activities in your project then you must add them in the manifest. 因为如果您的项目中有不同的活动,则必须将其添加到清单中。

I think you did one mistake... You are passing Layout value instead of intent.. 我认为您犯了一个错误...您正在传递Layout值而不是Intent。

just check your code with mine.. you are passing R.layout.hafflayout instead of intent in setContent(intent); 只是我的..你在setContent(意向)传递,而不是意图 R.layout.hafflayout检查你的代码; line 线

Updated 更新

TabHost.TabSpec spec1,spec2,spec3;  // Resusable TabSpec for each tab
Intent intent1,intent2,intent3;
intent1 = new Intent().setClass(this, HaffActivity.class);

// Initialize a TabSpec for each tab and add it to the TabHost
spec1 = tabHost.newTabSpec("Haff").setIndicator("Haff",
                  res.getDrawable(R.drawable.ic_tab_haff))
              .setContent(intent1);
tabHost.addTab(spec);

// Do the same for the other tabs
intent2 = new Intent().setClass(this, MapsActivity.class);
spec2 = tabHost.newTabSpec("Maps").setIndicator("Maps",
                  res.getDrawable(R.drawable.ic_tab_maps))
              .setContent(intent2);
tabHost.addTab(spec);

intent3 = new Intent().setClass(this, ProfileActivity.class);
spec3 = tabHost.newTabSpec("Profile").setIndicator("Profile",
                  res.getDrawable(R.drawable.ic_tab_profile))
              .setContent(intent3);
tabHost.addTab(spec);

Update: 更新:

you didnt add dot( . ) before activity's name in menifest.xml 您没有在menifest.xml中的活动名称之前添加dot(

<activity android:name=".HaffActivity">
</activity>

<activity android:name=".MapsActivity">
</activity>

<activity android:name=".ProfileActivity">
</activity>

Update...Latest 更新...最新

in your MapsActivity.class you setContentView(R.layout.main); 在您的MapsActivity.class中,您可以设置ContentView(R.layout.main); so please change it and add your xml for MapActivity 所以请更改它并为MapActivity添加您的xml

Try cleaning the project. 尝试清理项目。 Also, are you using the google libraries for maps ? 另外,您是否将Google库用于地图 You need to add a link to Google API. 您需要添加指向Google API的链接。

Do you have implementation of MapsActivity in your code? 您的代码中是否有MapsActivity的实现? I can only see LocationActivity. 我只能看到LocationActivity。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM