[英]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
Do you have implementation of MapsActivity in your code? 您的代码中是否有MapsActivity的实现? I can only see LocationActivity. 我只能看到LocationActivity。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.