1. Gewinne jetzt ein UMiDIGI C Note - alle Informationen findest du hier!!
  1. Käsebrot, 06.02.2012 #1
    Käsebrot

    Käsebrot Threadstarter Android-Hilfe.de Mitglied

    Hallo,

    ich schreibe eine einfache App in der ich ein paar Einstellung mittels Menü machen will. Wie gehe ich da vor ?

    Im Moment starte ich eine 2. Activity und habe dann mein Menü mit eigener Oberfläche. Ich kann da auch alle Werte ändern.
    Die "Start Werte" für das Menü übergebe ich mit "in.putExtras(bundle);", das Menü rufe ich mit "startActivityForResult(in,0);".

    Code:
    Intent in = new Intent(this,MenuActivity.class);
    
    Bundle bundle = new Bundle();
    bundle.putString("param1",String.valueOf(precont[0]));
    bundle.putString("param2",String.valueOf(precont[1]));
    bundle.putString("param3",String.valueOf(precont[2]));
    in.putExtras(bundle);
    
    startActivityForResult(in,0);
    
    Im Menü habe ich einen "Fertig" Button, der die geänderten Werte mit "Intent.putExtras(bundle);" wieder an die "Haupt" Activity übergibt, anschließend "setResult(1);" und finish();"

    Code:
    Bundle bundle = new Bundle();
    bundle.putString("param1", "123");
    bundle.putString("param2", "234");
    bundle.putString("param3", "345");
    
    Intent mIntent = new Intent();
    mIntent.putExtras(bundle);
    setResult(1);
    finish();
    
    Die Haupt Activity erkennt das auch mit "protected void onActivityResult(int requestCode, int resultCode, Intent data) {"

    Code:
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            Log.d("CheckStartActivity","onActivityResult and resultCode = "+requestCode);
            Log.d("CheckStartActivity","onActivityResult and resultCode = "+resultCode);
    
            super.onActivityResult(requestCode, resultCode, data);
            if(resultCode==1){
                Toast.makeText(this, "Pass", Toast.LENGTH_LONG).show();
            }
            else{
                Toast.makeText(this, "Fail", Toast.LENGTH_LONG).show();
            }
    
            Bundle bundle = this.getIntent().getExtras();
            Log.d("Bundle:","onATR = " + bundle);          //[COLOR=Red] zeigt "null" an ![/COLOR]
            String param1 = bundle.getString("param1");
    
            String param2 = bundle.getString("param2");
            String param3 = bundle.getString("param3");
            Toast.makeText(this, param1, Toast.LENGTH_LONG).show();
    
    
            precont[0] = Float.parseFloat(param1);
            precont[1] = Float.parseFloat(param2);
            precont[2] = Float.parseFloat(param3);
    
    
        }
    
    Der result-Code ist ok. Aber ich bekomme die Daten nicht übergeben (Null-Pointer laut log).

    Wie kann ich Daten von einer Activity an die aufrufende Activity zurückgeben ?

    Das mit den Button ist nur eine Notlösung. Ich würde das Menü lieber mit dem "Back" Button verlassen. Wie macht man das. Ich kenne das aus vielen Apps. Ich habe es mit "OnDestroy" versucht, klappt aber nicht (der Code darunter wird anscheinen nicht ausgeführt). Muß ich die Daten von Menü irgendwo speichern ?

    Dank und Gruß,
    KB.
     
  2. Käsebrot, 06.02.2012 #2
    Käsebrot

    Käsebrot Threadstarter Android-Hilfe.de Mitglied

    so, hab's gefunden:

    ich muß die Daten von dem Intent holen, das die aufgerufene Activity gefeuert hat:
    Bundle bundle = data.getExtras();

    Bleibt aber noch die Frage, wie ich das ganze ohne extra Button machen kann, also nur über die "Back"-Taste am Gerät.

    KB.
     
  3. Käsebrot, 08.02.2012 #3
    Käsebrot

    Käsebrot Threadstarter Android-Hilfe.de Mitglied

    So, hab den letzen Punkt auch gefunden:

    Stichwort: override back button:

    Code:
         @Override
         public boolean onKeyDown(int keyCode, KeyEvent event) {
             if ((keyCode == KeyEvent.KEYCODE_BACK)) {
                 Log.d(this.getClass().getName(), "back button pressed");
    
                Bundle bundle = new Bundle();
                bundle.putString("param1", String.valueOf(precont[0]));
                bundle.putString("param2", String.valueOf(precont[1]));
                bundle.putString("param3", String.valueOf(precont[2]));
    
                Intent mIntent = new Intent();
                mIntent.putExtras(bundle);
                setResult(1, mIntent);
    
    Damit hab ich die Kontrolle über den Backbutton und kann prima meine Werte zurückgeben :flapper:

    KB.
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Hilfe bei Fehler in Quellcode benötigt Android App Entwicklung Freitag um 23:01 Uhr
[OFFEN] App Leitfaden gesucht! Android App Entwicklung 20.06.2017
[OFFEN] Welches Intent erzeugt der Klick im Homescreen auf das Icon einer App? Android App Entwicklung 20.06.2017
[OFFEN] Logdateien der eigenen App Android App Entwicklung 15.06.2017
[ERLEDIGT] Kleine Probleme mit einer App Android App Entwicklung 14.06.2017
[OFFEN] Problem mit meiner Login App Android App Entwicklung 10.06.2017
[Meinung] Spezielle App für Mittelstand erstellen (lassen) Android App Entwicklung 23.05.2017
[ERLEDIGT] put in HashMap bringt App zum abstürzen Android App Entwicklung 22.05.2017
[ERLEDIGT] *.viivo kann keiner App zugeordnet werden - MANIFEST.XML ? Android App Entwicklung 19.05.2017
[GELÖST] Nach AS Update Fehler Error running app: Default Activity not found Android App Entwicklung 16.05.2017
Du betrachtest das Thema "Rückgabewerte: App mit Menü" im Forum "Android App Entwicklung",