Einheitenrechner stürzt ab (Implementieren von strings in mainactivity )

  • Antworten:2
mika
  • Forum-Beiträge: 1

17.06.2018, 18:56:59 via Website

Guten Abend
wir sitzen momentan an unserem ersten Projekt und kommen nicht weiter.
Es geht um einen Einheitenrechner der Längen, Flächen und Körper von der einen in eine größere bzw. eine kleinere Einheit umwandeln kann.
Die Einheiten kann man per Spinner anwählen. Bis dahin ist das ok.

Per RadioButton sollte es möglich sein zwischen den verschiedenen Dimensionen wählen zu können und hier kommen wir nicht weiter.

Hier unsere Mainactivity:

package com.example.emre.einheitenrechner_1706;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import java.lang.reflect.Array;
import android.view.View;
import android.widget.ArrayAdapter;

public class MainActivity extends AppCompatActivity {

private Spinner spinner1, spinner2;
private Button btnSubmit;
private Array variable_array;
private Array länge_array, fläche_array, volumen_array;
ArrayAdapter Adapter;

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

    addListenerOnButton();
    addListenerOnSpinnerItemsSelection();
}


public void addListenerOnSpinnerItemsSelection() {
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner2 = (Spinner) findViewById(R.id.spinner2);

}

public void addListenerOnButton() {

    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner2 = (Spinner) findViewById(R.id.spinner2);
    btnSubmit = (Button) findViewById(R.id.btnSubmit);

}

public void onRadioButtonClicked(View view) {
    boolean checked = ((RadioButton) view).isChecked();
    final int id = ((RadioGroup)view.findViewById(R.id.radioGroup)).getCheckedRadioButtonId();

    switch (id) {
        case R.id.Länge_Radio:
            if (checked) {
                spinner1.setAdapter(Adapter);
                Adapter.add(länge_array);
                Adapter.notifyDataSetChanged();
            }
            break;

        case R.id.Fläche_Radio:
            if (checked) {
                spinner1.setAdapter(Adapter);
                Adapter.add(fläche_array);
                break;
            }
        case R.id.Volumen_Radio:
            if (checked) {
                spinner1.setAdapter(Adapter);
                Adapter.add(volumen_array);
                break;
            }
    }

}

}

strings.xml:


Einheitenrechner_1706


Umrechnen
Länge
Fläche
Volumen
variable_array

<string-array name="länge_array">
    <item>nm</item>
    <item>µm</item>
    <item>mm</item>
    <item>cm</item>
    <item>dm</item>
    <item>m</item>
    <item>km</item>
</string-array>

<string-array name="fläche_array">
    <item>nm²</item>
    <item>µm²</item>
    <item>mm²</item>
    <item>cm²</item>
    <item>dm²</item>
    <item>m²</item>
    <item>km²</item>
</string-array>

<string-array name="volumen_array">
    <item>nm³</item>
    <item>µm³</item>
    <item>mm³</item>
    <item>cm³</item>
    <item>dm³</item>
    <item>m³</item>
    <item>km³</item>
</string-array>

und activitymain.xml:


android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:layout_editor_absoluteY="81dp">

<EditText
    android:id="@+id/Eingabefeld"
    android:layout_width="153dp"
    android:layout_height="0dp"
    android:layout_marginStart="36dp"
    android:layout_marginTop="16dp"
    android:ems="10"
    android:hint="Hier eingeben"
    android:inputType="textPersonName|number|numberDecimal"
    android:text="@string/Eingabefeld"
    app:layout_constraintBottom_toTopOf="@+id/Ausgabefeld"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/Ausgabefeld"
    android:layout_width="153dp"
    android:layout_height="0dp"
    android:layout_marginBottom="383dp"
    android:layout_marginStart="36dp"
    android:text="@string/Ausgabefeld"
    android:textAppearance="@style/TextAppearance.AppCompat"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/Eingabefeld" />

<Spinner
    android:id="@+id/spinner1"
    android:layout_width="150dp"
    android:layout_height="40dp"
    android:layout_marginBottom="81dp"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="28dp"
    android:entries="@array/variable_array"
    app:layout_constraintBottom_toTopOf="@+id/btnSubmit"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/Eingabefeld"
    app:layout_constraintTop_toTopOf="parent" />

<Spinner
    android:id="@+id/spinner2"
    android:layout_width="150dp"
    android:layout_height="40dp"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="20dp"
    android:entries="@array/variable_array"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.517"
    app:layout_constraintStart_toEndOf="@+id/Ausgabefeld"
    app:layout_constraintTop_toBottomOf="@+id/spinner1" />

<Button
    android:id="@+id/btnSubmit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="314dp"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:text="@string/Umrechnen"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.41"
    app:layout_constraintStart_toEndOf="@+id/radioGroup"
    app:layout_constraintTop_toBottomOf="@+id/spinner1"
    tools:text="Umrechnen" />


<RadioGroup
    android:id="@+id/radioGroup"
    android:layout_width="126dp"
    android:layout_height="65dp"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.123"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/Ausgabefeld">

    <RadioButton
        android:id="@+id/Länge_Radio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/Längen_Radio"
        android:onClick="onRadioButtonClicked"/>

    <RadioButton
        android:id="@+id/Fläche_Radio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/Fläche_Radio"
        android:onClick="onRadioButtonClicked"/>

    <RadioButton
        android:id="@+id/Volumen_Radio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/Volumen_Radio"
        android:onClick="onRadioButtonClicked"/>
</RadioGroup>

Vielen Dank schon mal :)

Kommentieren
Jokel
  • Forum-Beiträge: 1.530

18.06.2018, 05:28:21 via Website

Hallo Willkommen im Forum.
Ohne deinen Code jetzt gelesen zu haben erkläre uns doch etwas genauer wo es hängt.
LG J.

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

18.06.2018, 07:25:27 via Website

Hallo Habe mir euren Code angesehen.

Zuerst fällt mir auf das euer Button gar keine Funktion hat , es ist kein onClicklistner für ihn vorhanden. Setzt eigenen in Java oder in XML mit Hilfe des OnClick Attributs.

Zum Radiobutton.
Da benutzt ihr in XML das onClick. Somit wir bei jeden klick auf einen der Button ein Event ausgelöst und die Methode „onRadioButtonClicked“ aufgerufen. Ihr wird die View des geklickten Button übergeben. Nicht die View der Gruppe.
In dieser View steckt eigentlich schon die Id des geclickten Buttons.

Ihr brauchst sie euch nicht über die Gruppe zu holen .
Das macht man wen man auf ein anderes Event reagiert (zB. euer Button) und prüfen will welcher Button aktiv ist.
Und wenn dann nicht mit den Context der View sondern von der Activity also this.

public void onRadioButtonClicked(View view) {
boolean checked = ((RadioButton) view).isChecked();

switch (view.getid()) {
    case R.id.Länge_Radio:
        if (checked) {
            spinner1.setAdapter(Adapter);
            Adapter.add(länge_array);
            Adapter.notifyDataSetChanged();
        }
        break;

    case R.id.Fläche_Radio:
        if (checked) {
            spinner1.setAdapter(Adapter);
            Adapter.add(fläche_array);
            break;
        }
    case R.id.Volumen_Radio:
        if (checked) {
            spinner1.setAdapter(Adapter);
            Adapter.add(volumen_array);
            break;
        }
}

}

Außerdem ist die Methode „addListenerOnSpinnerItemsSelection()“ eigentlich sinnlos
da ihr das alles noch mal in der „addListenerOnButton()“ macht.

lg J.

Hilfreich?
Kommentieren