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 einfachadb
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 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie überprüft, dass Sie Hinzugefügt haben die Profile.class in der manifest-Datei wie:
Auf die Schaltfläche onClick, ich glaube, Sie brauchen, um startactivity und setzen Sie die Absicht, mit der neuen Tätigkeit und auch auf es in der AndroidManifest.xml
Ich landete mit neu zu strukturieren Sie den code, hier ist was am Ende der Arbeit: