Die Schaltflächen zum Öffnen einer neuen MapActivity können nicht angezeigt werden

  • Ich habe jetzt schon einige Zeit damit rumgespielt und hoffe, dass jemand intelligenter ist, als ich helfen kann. Mein Chef hat mir die Möglichkeit gegeben, Android-Apps zu entwickeln, und ich habe Probleme mit diesem Problem. Ich muss mehrere Apps mit mehreren Aktivitäten erstellen, kann diesen Punkt jedoch nicht überwinden. Ich bin sicher, es ist ein Problem bei meiner Kodierung, aber bei so vielen verschiedenen Vorgehensweisen bin ich an dieser Stelle etwas verwirrt.

    Ich baue eine App, die eine Hauptaktivität mit zwei Schaltflächen auf der Seite öffnet. Einer ist der Schließen-Button und funktioniert gut. Ich möchte mit der nächsten Schaltfläche eine mapActivity öffnen, die auf den Standort meines Campus eingestellt ist. Ich bin kein Student an einem Projekt, ich arbeite nur für ein Community College. ; -)

    Was wirklich seltsam ist, ist, dass der EXACT-Code von google.maps von selbst funktioniert. Ich kann einfach nicht die Schaltfläche zum Öffnen der Aktivität erhalten, ohne abgestürzt zu sein.

    Hier sind meine manifest.xml, main.xml, meine main.java, Map.java und meine Karte. xml. Würden Sie bitte einen Kommentar abgeben und mich in die richtige Richtung weisen?

    Vielen Dank im Voraus, Dave

    Hier sind zwei Fehler :

     11-21 14:50:58.968: W/dalvikvm(437): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
    11-21 14:50:58.978: E/AndroidRuntime(437): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=edu.mtsac.mapproject.MAP }
     

    Dies besagt, dass die Aktivität nicht gefunden wurde, aber ich kann sie in meinen Quelldateien und im sehen Manifest hier:

     <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="edu.mtsac.mapproject"
    android:versionCode="1"
    android:versionName="1.0" >
    
    <uses-sdk
        android:minSdkVersion="3"
        android:targetSdkVersion="8" />
    
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <uses-library android:name="com.google.android.maps" />
    
        <activity
            android:label="@string/app_name"
            android:name=".Main" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    
        <!-- map activity -->
        <activity
            android:label="Map"
            android:name=".Map" >
    
            <intent-filter >
                <action android:name="edu.mtsac.mapproject.MAP" />
    
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>
    
    </manifest>
     

    Meine Main.xml- und Map.xml-Dateien sind einfach:

     <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    
    <Button
        android:id="@+id/mapBtn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="Map" />   
    
    </RelativeLayout>
     

    Map.xml

     <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <com.google.android.maps.MapView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/mapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:apiKey="0jevUfyLD_b1Eikgpm_mo7KVDspzhPJdRDDaxEw"
        android:clickable="true"
        android:enabled="true" />
    
    </LinearLayout>
     

    der Main.java

     package edu.mtsac.mapproject;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    
    public class Main extends Activity {
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
         Button mapBtn = (Button) findViewById(R.id.mapBtn);
                 mapBtn.setOnClickListener(new View.OnClickListener() {
    
                     public void onClick(View v) {
                       startActivity(new Intent(Main.this, Map.class));
                     }
                });
    
    
            Button closeBtn = (Button) findViewById(R.id.closeBtn);
        closeBtn.setOnClickListener(new View.OnClickListener() {
    
            public void onClick(View v) {
                finish();
            }
        });
    
    };// end onCreate()
    }
     

    und zuletzt die Map.java

     package edu.mtsac.mapproject;
    
    import android.os.Bundle;
    
    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 Map extends MapActivity {
    
    MapController mc;
    GeoPoint p;
    MapView mapview;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map);
    
        mapview = (MapView) findViewById(R.id.mapView);
        mapview.displayZoomControls(true);
        mapview.setBuiltInZoomControls(true);
        mapview.setSatellite(true);
    
        mc = mapview.getController();
        String coord[] = { "34.047517", "-117.847050" };
    
        double lat = Double.parseDouble(coord[0]);
        double lng = Double.parseDouble(coord[1]);
    
        p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
    
        mc.animateTo(p);
        mc.setZoom(17);
        mapview.invalidate();
    }
    
    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
    }
     
    29 November 2011
    Dave
3 answers
  • Versuchen Sie in Ihrer Main.java, stattdessen diesen Code zu verwenden:

         Button mapBtn = (Button) findViewById(R.id.mapBtn);
        mapBtn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                startActivity(new Intent(Main.this, Map.class));
            }
        });
     
    22 November 2011
    Hicham
  • In der "Map" -Schaltfläche klicken Sie auf die Implementierung eines Intents, dessen Aktion "edu.mtsac.mapproject.MAP" ist. Da der Absichtsfilter Ihres Manifests nach Aktion "android.intent.action.MAP" sucht, wird er nicht in Ihre Aktivität umgewandelt.

    Ich glaube, Sie wurden durch explizite oder implizite Absichten verwirrt. Explizite Absichten verwenden den spezifischen Namen der Aktivität, die Sie verwenden möchten, implizite Absichten definieren jedoch nur eine Aktion, die Sie durchführen möchten Aktion in Ihrem Manifest.

    22 November 2011
    Dan S
  • Ich sehe in Ihrem Manifest keine Aktivität, die für die Ausführung dieser Aktion edu.mtsac.mapproject.MAP registriert ist. Ich gehe davon aus, dass eine Ausnahme auftritt, wenn Sie anrufen:

     startActivity(new Intent("edu.mtsac.mapproject.MAP"));
     

    Es sieht so aus, als würden Sie wahrscheinlich versuchen, Ihr Telefon zu starten Map-Aktivität, für die Sie keine Aktion angeben müssen. Machen Sie einfach etwas wie:

     startActivity(new Intent(this, Map.class));
     

    Sie möchten wahrscheinlich diesen doc in intents , um zu verstehen, was hier wirklich los ist und wie Sie diese Klassen verwenden sollten.

    22 November 2011
    kabukoBrad Leach