Wert Übergabe aus zweiter Activity

  • 4 Antworten
  • Letztes Antwortdatum
M

moppi1972

Neues Mitglied
0
Hallo

ich habe ein Tut. Nachgebaut und mich Wörtlich dran gehalten.

Trotzdem bekomme ich die Fehler-Meldung: die Methode
super.onActivityResult


ist nicht definiert.

der Code ist folgender:




package com.exmple.datenuebergabetest;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

TextView sicht;
Button backe;



@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sicht=(TextView)findViewById(R.id.textView1);
backe=(Button)findViewById(R.id.button1);





backe.setOnClickListener(new View.OnClickListener(){

@Override
public void onClick(View v) {



Intent in = new Intent(MainActivity.this,ZweitActivity.class);

startActivityForResult(in,0);


}


protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode,resultCode,data);
if(resultCode == RESULT_OK)
{

Bundle korb = data.getExtras();
String s = korb.getString("wert1");
}


}




});


Ich bin noch am lernen.
Die Erklärung bei diesem Tut hatte ich so weit verstanden nur nützt es ja nix wenn sie nicht stimmen.

Was ist falsch an diesem Code?

Mit freundlichen Grüßen
Moppi1972
 
Die Fehlermeldung ist schon korrekt, ich wüste nicht, warum ein OnClickListener eine Methode onActivityResult() haben sollte.

So ganz ist mir nicht klar, was du willst. Aber die Klammersetzung solltest du schon beherrschen. ;)

Es bringt nichts, einfach nur Code falsch zu kopieren. Du solltest leicht erst mal ein paar Java-Programme schreiben, bevor du mit Android weiter machst. Solange du kein Gefühl für Java als Programmiersprache hast, kommen solche Katastrophen, wie die oben veröffentlicht, heraus. Ich denke mal, die eine Fehlermeldung war nicht die einzige, eigentlich müsste Eclipse schon nach Button backe; sich gemeldet haben.
Code:
Syntax error, insert "}" to complete ClassBody

Ich kann mir auch nicht vorstelle, dass das Beispiel so im Netz stand. Wenn ja, braucht der Autor Schläge.
 
Zuletzt bearbeitet:
Es ist die einziegste Fehlermeldung.
Es geht drum aus einer zweiten Activity einen Wert in die Main Activity zu holen.
Mit der Mehtode soll der Rückgabe Wert überprüft werden.
 
In deinen Code steht:


Code:
[I]// hier setzt du den listener
[/I] backe.setOnClickListener(new View.OnClickListener(){  [I] // hier definierst du eine anonyme Klasse[/I]
 [I]
    // erste Methode[/I]
    @Override
    public void onClick(View v) {
        Intent in = new Intent(MainActivity.this,ZweitActivity.class);
        
        startActivityForResult(in,0);
    }
 
    [I]// zweite Methode[/I]
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode,resultCode,data  ); [I]//  geht nicht, weil das Interface OnClickListener solch eine Methode nicht  besitzt.[/I]
         if(resultCode == RESULT_OK) {
 
              Bundle korb = data.getExtras();
              String s = korb.getString("wert1");
          }
      }
});

[I]// und hier endet der ganze foobar.[/I]
So wie du die Klammer setzt, bin ich mir nicht sicher, ob du weißt, was eine anonyme Klasse ist. Was mir sagt, das du noch sehr viel Nachhilfe in Java brauchst.

Anonymous Classes (The Java™ Tutorials > Learning the Java Language > Classes and Objects)

Ich sehe hier, ist das du mit einer zweiten Activity kommunizieren möchtest. Was ich nicht verstehe, wie du es machst. So ergibt das kein Sinn.

Schau mal hier nach:
How to manage start activity for result on Android? - Stack Overflow



-----------------

Nachtrag: Bevor ich es vergesse, am Ende deines Code fehlen noch zwei geschweifte Klammern. Eine am Ende der Methode onCreate(). Und eine um den Block deiner Klasse zu schließen.
 
Zuletzt bearbeitet:
Kannst du bitte deinen Code in Code-Tags einschliessen, damit der Code hier im Forum schön formatiert dargestellt wird? Dann ist es für uns viel einfacher zu helfen. Sonst müssen wir immer erst den ganzen Code kopieren und neu formatieren.

Sieht dann so aus:
HTML:
[CODE]
... hier dein Code ...
[/CODE]

Wenn du beim verfassen eines Beitrags auf den Erweitert Button (gleich neben Antworten) klickst, erhälst du einen neuen Button für die Code-Tags in Form eines Raute-Zeichens (#).

Aber um noch etwas zum eigentlichen Problem beizutragen: Das Hauptproblem ist, wie bereits erwähnt, dass deine Methode onActivityResult am falschen Ort steht. Es müsste so aussehen:

Code:
backe.setOnClickListener(new View.OnClickListener(){   

    @Override
    public void onClick(View v) {
        Intent in = new Intent(MainActivity.this,ZweitActivity.class);
        
        startActivityForResult(in,0);
    }
});

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode,resultCode,data);

    if(resultCode == RESULT_OK) {
        Bundle korb = data.getExtras();
        String s = korb.getString("wert1");
    }
}

super bezieht sich immer auf die Oberklasse. Du willst, dass es sich auf die Klasse Activity bezieht. Wenn du es aber innerhalb des ClickListeners benutzt, bezieht es sich darauf (sehr vereinfacht gesagt :winki:).
 
Zurück
Oben Unten