Verweis auf AlertDialog und Intent Problem

  • Antworten:11
max theis
  • Forum-Beiträge: 31

15.09.2010, 11:33:43 via Website

Guten Morgen,

gerade sitze ich wieder an einem Problem, das eigentlich gar keins sein sollte. Nach dem ich es geschafft habe endlich einen AlertDialog in einer Viewer Klasse anzeigen zu lassen habe ich Probleme in diesem AlertDialog ein neuen Intent zu erstellen um eine neue Activity zu starten.

1: "The method setClass(Context, Class<?>) in the type Intent is not applicable for the arguments (MotionPathView, Class<LevelAnzeige>)"
2: "The method startActivity(Intent) is undefined for the type new DialogInterface.OnClickListener(){}"



1.setNeutralButton("Finish", new DialogInterface.OnClickListener() {
2 public void onClick(DialogInterface dialog, int which) {
3
4 Intent finishintent = new Intent();
5
6 finishintent.setClass(MotionPathView.class, LevelAnzeige.class); FEHLER: .setClass ist unterstrichen "1 siehe oben"
7 startActivity(finishintent); Fehler 2
8
9 }

2. Möglichkeit

Also zweite Möglichkeit habe ich probiert den ganzen Alert Dialog in die Activity Klasse zu schreiben und darauf zu verweisen.

1ActivityKlasse ak = new ActivityKlasse();
2ak.Dialog();

In der AktivityKlasse ist der Code genauso wie in der obigen Variante. Es lässt sich kompilieren, es steht aber "Tut uns leid! Die anweundg ...wurde unerwartet beendet."

3. Möglichkeit / Nutzung von einem Intent

Dann habe ich versucht nur den Intent in die Activity Klasse zu schreiben und von da aus auf eine neue Activity zu verweiesen


1.setNeutralButton("Finish", new DialogInterface.OnClickListener() {
2 public void onClick(DialogInterface dialog, int which) {
3
4 ak.IntentAufruf()
5 }

Und in der ActivityKlasse steht

1public void IntenAufruf(){
2
3Intent intent = new Intent();
4intent.setclass(ActivityKlasse.class, neueKlasse.class);
5startActivity(inten);
6
7}

So, ich hoffe das mir einer bei meinem PRoblem behilflich sein kann, oder mir sagt welche Richtung ich den am besten gehen soll.

Vielen Dank im vorraus.

Gruß
max

— geändert am 15.09.2010, 11:36:43

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

15.09.2010, 12:01:31 via Website

log ausgaben wären wohl sehr hilfreich

swordiApps Blog - Website

Antworten
max theis
  • Forum-Beiträge: 31

15.09.2010, 12:25:30 via Website

Danke für deine Antwort.

Sorry, hätte ich eigentlich von Anfang an dran denken müssen.

Ich teste gerade folgende möglichkeit:

Aufruf des Dialoges in der Viewer Klasse

1case MotionEvent.ACTION_UP:
2
3 final MotionPathTest motiontest = new MotionPathTest();
4 motiontest.Dialog();
5
6break;

AlertDialog in der Aktivity klasse

1public void Dialog(){
2
3
4
5 builder.setMessage("Was möchte Sie mit Ihrer Gurke tun?").setPositiveButton("Save", new DialogInterface.OnClickListener() {
6 public void onClick(DialogInterface dialog, int which) {
7
8 }
9 }).setNegativeButton("New", new DialogInterface.OnClickListener() {
10 public void onClick(DialogInterface dialog, int which) {
11
12 }
13 }).setNeutralButton("Finish", new DialogInterface.OnClickListener() {
14 public void onClick(DialogInterface dialog, int which) {
15
16 Log.v("", "Yo YO YO");
17
18 }
19
20
21 });
22
23 AlertDialog alert = builder.create();
24 alert.show();
25
26
27 }

Und der dazugehörige Fehler

09-15 12:14:34.120: ERROR/AndroidRuntime(3513): Uncaught handler: thread main exiting due to uncaught exception
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): java.lang.NullPointerException
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at com.test.motionpath.MotionPathTest.Dialog(MotionPathTest.java:40)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at com.test.motionpath.MotionPathView.onTouch(MotionPathView.java:212)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at android.view.View.dispatchTouchEvent(View.java:3668)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1712)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1202)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at android.app.Activity.dispatchTouchEvent(Activity.java:1987)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1696)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at android.view.ViewRoot.handleMessage(ViewRoot.java:1658)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at android.os.Handler.dispatchMessage(Handler.java:99)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at android.os.Looper.loop(Looper.java:123)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at android.app.ActivityThread.main(ActivityThread.java:4203)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at java.lang.reflect.Method.invokeNative(Native Method)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at java.lang.reflect.Method.invoke(Method.java:521)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
09-15 12:14:34.290: ERROR/AndroidRuntime(3513): at dalvik.system.NativeStart.main(Native Method)


Gruß
max

Antworten
L3322
  • Forum-Beiträge: 467

15.09.2010, 12:36:34 via App

Intent i = new Intent(mContext, deineactivity.class)
mContext.startActivity(i)

du musst dir den context mContext erstellen dann klappts habe so ähnliches Problem gelöst

"Hard work beats talent, when talent fails to work hard"

Antworten
max theis
  • Forum-Beiträge: 31

15.09.2010, 14:00:19 via Website

Hey Danke für deine Antwort.

okay,...also ich versuche es jetzt mal wie folgt, nach deinem Post zur Folge, müsste ich keine Verweis auf die Activity Seite machen um das Intent zu nutzen

Das habe ich jetzt mal ausprobiert

Viewer klasse


1public ViewerKlasse (Context context){
2super(context);
3
4builder = new AlertDialog.Builder(context); //Funktioniert
5
6intent = new Intent(context, LevelAnzeige.class) // zumindestens keine Fehler von Eclipse angezeigt
7
8}


}

dann schreibe ich den Allert Dialog

1idx = 0;
2 // AlertDialog
3 builder.setMessage("Was möchte Sie mit Ihrer Gurke tun?").setPositiveButton("Save", new DialogInterface.OnClickListener() {
4 public void onClick(DialogInterface dialog, int which) {
5 savePoints(points);
6 }
7 }).setNegativeButton("New", new DialogInterface.OnClickListener() {
8 public void onClick(DialogInterface dialog, int which) {
9 points.clear();
10 lineCanvas.drawColor(Color.BLACK);
11 }
12 }).setNeutralButton("Finish", new DialogInterface.OnClickListener() {
13 public void onClick(DialogInterface dialog, int which) {
14
15 intent = new Intent();
16 startActivity(intent); FEHLER: The method startActivity(Intent) is undefined for the type new DialogInterface.OnClickListener(){}
17 }
18
19
20 });
21
22
23 AlertDialog alert = builder.create();
24 alert.show();

Vielleicht hast du ja noch eine Idee, ich fände es halt Praktisch wenn ich gleich alle an dieser Stelle verwenden könnte.

Gruß
max

Antworten
max theis
  • Forum-Beiträge: 31

16.09.2010, 11:10:41 via Website

Hallo, hat vielleicht irgendjemand eine Idee?

Wenn ich zu meinem AlertDiallog "startActivity(intent);" machen möchte, erscheint folgender Fehler in Eclipse "The method startActivity(Intent) is undefined for the type new DialogInterface.OnClickListener(){}". Aber ich setze den Intent oben im Konstrukter im context.

Was mach ich denn Falsch?

Antworten
L3322
  • Forum-Beiträge: 467

16.09.2010, 12:31:22 via App

mContext.startActivity(intent)

"Hard work beats talent, when talent fails to work hard"

Antworten
max theis
  • Forum-Beiträge: 31

16.09.2010, 14:36:31 via Website

leider kann ich das nicht so aufrufen wir du mir das geschrieben hast.

"context cannot be resolved"

Mein Konstruktor

1public MotionPathView(Context context)
2 {
3 super(context);
4 builder = new AlertDialog.Builder(context);
5
6 intent= new Intent(context, LevelAnzeige.class);
7 //context.startActivity(intent);
8}
da steht natürlich noch mehr, aber das ist die hauptsache.

AlertDialog

1case MotionEvent.ACTION_UP:
2
3 // final MotionPathTest motiontest = new MotionPathTest();
4 // motiontest.Dialog();
5
6 idx = 0;
7 // AlertDialog
8 builder.setMessage("Was möchte Sie mit Ihrer Gurke tun?").setPositiveButton("Save", new DialogInterface.OnClickListener() {
9 public void onClick(DialogInterface dialog, int which) {
10 savePoints(points);
11
12 }
13 }).setNegativeButton("New", new DialogInterface.OnClickListener() {
14 public void onClick(DialogInterface dialog, int which) {
15 points.clear();
16 lineCanvas.drawColor(Color.BLACK);
17 }
18 }).setNeutralButton("Finish", new DialogInterface.OnClickListener() {
19 public void onClick(DialogInterface dialog, int which) {
20
21
22 //context.startActivity(intent);
23
24 }
25
26 });
27
28 AlertDialog alert = builder.create();
29 alert.show();
30
31 break;

Hilft die vielleicht weiter.

Gruß
max

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

16.09.2010, 14:39:44 via Website

java grundlagen :)

MeineKlasse.this wird funktionieren

swordiApps Blog - Website

Antworten
max theis
  • Forum-Beiträge: 31

16.09.2010, 14:53:52 via Website

@Markus Gursch

MeineKlasse.this wird funktionieren

kann jetzt eine sehr doofe Frage sein, soll ich das schreiben um die Activity aufzurufen, oder im Konstruktor ändern?!

sorry, wenn ich die Activity so angebe, funktioniert das so nicht.....ich bräuchte vielleicht einen kleinen Tipp mehr = )

— geändert am 16.09.2010, 14:54:06

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

16.09.2010, 15:28:44 via Website

Musst du nicht machen:

Aus deinen Inner Class Code:


DeineActivity.this.startActivitiy() ... aufrufen ... das sind wie gesagt Grundlagen, daher mal ein Java Buch konsultieren ;)

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

16.09.2010, 15:35:09 via Website

Mac Systems
Musst du nicht machen:

Aus deinen Inner Class Code:


DeineActivity.this.startActivitiy() ... aufrufen ... das sind wie gesagt Grundlagen, daher mal ein Java Buch konsultieren ;)

jetzt ist er sicher verwirrt.

du schreibst DeineActivity.this
und ich MeineActivity.this ;)

ein java buch ist gold wert

swordiApps Blog - Website

Mac Systems

Antworten