Eine double Variable in einer neuen Activity anzeigen

  • Antworten:5
Ben K.
  • Forum-Beiträge: 11

25.07.2014, 13:16:35 via Website

Ich habe nach einem Tutorial eine Converter gemacht der Zentimeter in Inches umrechnet. Ich will nun gerne das Ergebnis in einer neuen Activity Anzeigen, doch daran scheitere ich. Ich habe viele Methoden im Internet gefunden um Daten mitzunehmen aber irgendwie klappt dies nicht mit der double Variablen.
Ist es eigentlich so dass ich den Wert in der ersten Activity schon ausrechnen sollte oder wäre es besser denn eingegebenen Wert mitzunehmen und dann erst dort zu verarbeiten?

Wie sollte ich dass machen? Hier ist der src Code denn ich in der Ersten Activity habe!

`package com.example.converter;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity implements OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    final EditText ettoconvert = (EditText) findViewById(R.id.ettoconvert);
    final TextView etresult = (TextView) findViewById(R.id.etresult);
    Button btn = (Button) findViewById(R.id.btn);


    //if (TextUtils.isEmpty(ettoconvert.getText().toString())){ 
    //  return;
    //}


    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0){

            double centimeters = Double.valueOf( ettoconvert.getText().toString());

            double inches = centimeters * 0.393700787 ;
            //double inches = (centimeters / 600)*100 ;

            etresult.setText(String.valueOf(inches));


    } //wieso ist diese Klammer falsch?
    }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

public void onClick1(View v) {
    // TODO Auto-generated method stub

}

@Override
public void onClick(View arg0) {
    // TODO Auto-generated method stub

}

}
`

Des weiteren hebe ich eine if Abfrage am Anfang gemacht damit es keine Fehlermeldung gibt wenn das Feld leer ist, doch dann Funktioniert die Rechnung nicht.

Ich bin noch ein ziemlicher Neuling im programmieren für Android ich würde mich über Antworten freuen!

Antworten
Michele
  • Forum-Beiträge: 1.525

25.07.2014, 13:43:21 via Website

Hallo.

Erstmal ist die fragen, warum 2x onClick Methode?
Einmal reicht.

Etwa du machst es so:

 btn.setOnClickListener(new OnClickListener()......

Oder hier alles drin:

@Override
public void onClick(View arg0) {
    // TODO Auto-generated method stub

}

und Implementierst OnClickListener.
Und dann reicht auch nur:

btn.setOnClickListener(this);

LG

— geändert am 25.07.2014, 13:47:17

Antworten
Georg C.
  • Forum-Beiträge: 235

25.07.2014, 23:03:27 via Website

dein Lauscher (OnClickListener()) hast du schon mit -> implements OnClickListener in der MainActivity Klasse "integriert".
für den (an Lauscher Anmeldung / Registrierung) Button reicht es (Michele hat schon vorgeschlagen) aus:

btn.setOnClickListener(this);

} //wieso ist diese Klammer falsch?
Weil in deinem Code herrscht Chaos.

Wen du einen OnClickListener Interface in deiner Klasse implementierst, -> ist weiteres was die Events des Button abfangen soll ... sagen wir Generell ... überflüssig.

Von implementierung einer zusätzliche Anonymer Klasse

btn.setOnClickListener(new OnClickListener()......

werde ich dringend Abraten!
Weil du den OnClickListener schon é in deiner Klasse integriert hast.
wiederhole:

public class MainActivity extends ActionBarActivity implements OnClickListener {

eine weitere Anonyme (OnClickListener) Klase, ist deshalb eigentlich überflüssig.

Wie der Michele schon sagte, mach mit den "onClick´s" Ordnung!

LG
Georg

— geändert am 25.07.2014, 23:04:53

Sorry für Gramatik & Stilistik Fehler.

Antworten
Ben K.
  • Forum-Beiträge: 11

28.07.2014, 11:30:58 via Website

Ich hatte ja schon in dem Code viel rumprobiert wie ich die Activity mit einer anderen verbinde und da dies leider schief lief habe ich versucht möglichst alles wieder auf dass am Anfang laufende Programm zu setzen. Als dass dann wieder so stand gab es viele Fehlermeldungen die ich beheben wollte und irgendwie gingen diese nicht weg. Letztendlich wurden die Methoden automatisch hinzugefügt, da ich alle "add unimloyed methodes" hinzufügen lies. Es gibt nun auch immer noch ein Problem mit ner Klammer. Aber ich entferne mal die eine OnClick Methode, mal sehen wie es dann aussieht.

Danke!

Antworten
Ben K.
  • Forum-Beiträge: 11

28.07.2014, 12:39:17 via Website

So,
ich habe nun alles noch einmal neu gemacht. Sieht ordentlicher aus und und Funktioniert auch!!!

package com.example.converter2;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity implements OnClickListener {

Button btn;
EditText ettoconvert;
TextView tvresult;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn = (Button)findViewById(R.id.btn);
    ettoconvert = (EditText)findViewById(R.id.ettoconvert);
    tvresult = (TextView)findViewById(R.id.tvresult);

    btn.setOnClickListener(this);   
}

@Override
public void onClick(View v) {

    if (TextUtils.isEmpty(ettoconvert.getText().toString()))
     {
return;

}
double centimeters = Double.valueOf(ettoconvert.getText().toString());

    double inches = centimeters * 0.393700787;

    tvresult.setText(String.valueOf(inches));


};

}

Zu meiner eigentlichen Frage. Wie kann ich nun die Daten der Double Variable durch Button drücken in einer weitern Activity anzeigen?
Ist es genauso wie bei einer Integer?
Ich will jetzt nicht schon wieder alles durcheinander bringen :)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

28.07.2014, 19:46:07 via App

Um Variable in eine Andere Activision zu transferieren musst du deinem Activision Intent Extras mitgeben.
Ab besten du Googles mal nach Datenübergabe zwischen zwei Activities.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten