So starten Sie eine Aktivität aus einem dialog?

Irgendwelche Ideen, wie man starten Sie eine Aktivität und senden eines Wertes aus einem dialog button?

Hier ist, was ich im moment haben. Habe versucht eine Reihe von Variationen, aber die app stürzt ab, wenn die Taste gedrückt wird:

dialog.setPositiveButton("View Profile", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
        Intent intent = new Intent();
        intent.setClass(context, Profile.class);
        intent.putExtra("profileID",  "8");            
        startActivity(intent);
        dialog.cancel();
        return;
    } 
});

Voll Klasse:

public class PlacesItemizedOverlay extends ItemizedOverlay {
    private Context context;
    private ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
    private Activity aClass;

    public PlacesItemizedOverlay(Context aContext, Drawable marker) {
        super(boundCenterBottom(marker));
        context = aContext;
    }

    public void addOverlayItem(OverlayItem item) {
        items.add(item); 
        populate();
    }

    @Override
    protected OverlayItem createItem(int i) {
        return (OverlayItem) items.get(i);
    }

    @Override
    public int size() {
        return items.size();
    }

    @Override
    protected boolean onTap(int index) {
        aClass = new Activity();
        OverlayItem item = (OverlayItem) items.get(index);
        if(item.getTitle() != null)
            {
            AlertDialog.Builder dialog = new AlertDialog.Builder(context);
            dialog.setTitle(item.getTitle());
            dialog.setPositiveButton("View Profile",
                    new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    Intent intent = new Intent();
                    intent.setClass(context, Profile.class);
                    intent.putExtra("profileID",  "8");            
                    aClass.startActivity(intent);
                    dialog.cancel();
                    return;
                } 
            });
            dialog.show();
        }
        return true;
    }
}

LogCat:

06-24 10:35:31.253: WARN/dalvikvm(30118): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
06-24 10:35:31.283: ERROR/AndroidRuntime(30118): FATAL EXCEPTION: main
06-24 10:35:31.283: ERROR/AndroidRuntime(30118): java.lang.NullPointerException
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):     at android.app.Activity.startActivityForResult(Activity.java:2901)
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):     at android.app.Activity.startActivity(Activity.java:3007)
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):     at com.example.android.test.PlacesItemizedOverlay$1.onClick(PlacesItemizedOverlay.java:57)
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):     at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:159)
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):     at android.os.Looper.loop(Looper.java:143)
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):     at android.app.ActivityThread.main(ActivityThread.java:4196)
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):     at java.lang.reflect.Method.invokeNative(Native Method)
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):     at java.lang.reflect.Method.invoke(Method.java:507)
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-24 10:35:31.283: ERROR/AndroidRuntime(30118):     at dalvik.system.NativeStart.main(Native Method)
06-24 10:35:31.293: WARN/ActivityManager(1344):   Force finishing activity com.example.android.test/.SearchActivity
  • putExtra() ist die richtige Methode zu verwenden. Was ist die Fehlermeldung, die in dem stack-trace?
  • Sie müssen mit mir nackt Planlos, Im nicht verwendet, um das Debuggen noch nicht. Ich werde sehen, ob ich finden kann, die "stack trace" - und poste es. Vielen Dank.
  • Geben Sie adb logcat in eine Kommando-Fenster, und suchen für die große Fehlermeldung.
  • Erstens, lassen Sie mich bittet, wenn ich mich als kompletter idiot im moment habe ich windows command promt ausgeführt, die durch die eclipse, die ich habe eingegeben "adb logcat" zu, die ich 'adb' ist, nicht erkannt wird als Befehl interne oder externe. Danke für das helfen mich mit diesem 🙂
  • Müssen Sie adb zu Ihrer Umgebungsvariablen. Oder, rufen Sie einfach adb im ..\android-sdk-windows\platform-tools Ordner
  • Kam verspätet an, abit, eclipse nicht erlauben würde, mich zu Debuggen mein Telefon. Sortiert ist es jetzt und wird die Ergebnisse 🙂

InformationsquelleAutor Paul | 2011-06-24
Schreibe einen Kommentar