CheckBox Rechner

  • 5 Antworten
  • Letztes Antwortdatum
ChrisiBoy

ChrisiBoy

Erfahrenes Mitglied
30
Also ich hab rund 15 checkboxen,
Auf jede habe ich:
Code:
 public void addListenerOnChk1() {

chk1 = (CheckBox) findViewById(R.id.chk1);

chk1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

if (((CheckBox) v).isChecked()) {
a = "2"
}

}
});
und bei jeder check box eben dann:
b = "8"
c = "3"
...

Und auf Button klick in der selben Activity:
Code:
 @Override
public void onClick(View v) {

TextView tv = (TextView)findViewById(R.id.text);
tv.setMovementMethod(LinkMovementMethod.getInstance());
String a,b, c, d;
Integer vis;
vis = Integer.parseInt(a)+Integer.parseInt(b)+Integer.parseInt(c)+Integer.parseInt(d) ; 
tv.setText(vis.toString());
Dann soll eben auf Button klick zusammen gerechnet werden was man eben ausgewählt hat
Gesendet von meinem GT-I9100 mit der Android-Hilfe.de App
 
Ok... Cool :) und weiter?

Gesendet von meinem Galaxy Nexus mit der Android-Hilfe.de App
 
dann nimmst du dir die integer werte und rechnest sie zusammen oder was willst du jetzt mit diesem Thread hier erreichen?
 
....ist schon ganz schön alt dieser beitrag !

bin java neuling und bräuchte so einen "rechner" ganz dringend (mehr als 15 checkboxen)


hätte alles mit if anweisungen gemacht - aber da werde ich alt !

funktioniert dieser code bei euch? - bei mir nicht....
 
Ich denke, es wäre besser (gewesen), wenn Du einen neuen Thread aufgemacht hättest, als einen sooo alten hervorzukramen.

Zum Code im ersten Post, nein, der funktioniert so nicht. Kann er auch gar nicht. Insbesondere im 2. Codeteil:
PHP:
...
String a,b, c, d;
...
vis = Integer.parseInt(a)+Integer.parseInt(b)+Integer.parseInt(c)+Integer.parseInt(d) ;
...
In Teil 1 wurden die Werte entsprechend der jeweiligen CheckBox zwar Variablen zugewiesen, in 2. Teil wurden aber neue! Variablen instanziert.
Sprich das "a" hier
PHP:
if (((CheckBox) v).isChecked()) {
a = "2"
}
Ist ein anderes als das "a" hier:
PHP:
String a,b, c, d;
und da die neuen Strings alle null sind, stürzt das ganze bei Integer.parseInt(a)+.... mit einer NumberFormatException ab.

Soviel zum alten Code. Da ich eine Idee hatte, wie man das ganze mit möglichst wenig Code umsetzen kann, hab ich mal was ausprobiert.

ABER: Mein Beispielcode hat zwei Voraussetzungen (und eine Einschränkung):
1. Alle CheckBoxen dienen wirklich der Berechnung. D.h. es gibt überhaupt keine anderen CheckBoxen.
und
2. Alle CheckBoxen haben als Text ihren Zahlenwert gesetzt. Sprich CB1 hat als angezeigten Text "1", CB2 "2", usw. Ansonsten lassen sich die Strings nicht nach Integer parsen.
3. Der Calc Button bzw. die calculate() Methode kann nur Addition.

MainActivity.java:
PHP:
package com.example.cbcalc;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class MainActivity extends Activity {

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

        Button calc = (Button) findViewById(R.id.bcalc);
        calc.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                TextView result = (TextView) findViewById(R.id.tvresult);
                result.setText(calculate());
            }
        });
    }

    /**
     * Calculate all set checkbox values using summation.
     */
    private String calculate() {

        RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.rellayout);
        int result = 0;
        // Iterate over all views (children) in the layout
        for (int i = 0; i < mainLayout.getChildCount(); i++) {

            View v = mainLayout.getChildAt(i);
            // Check if it is a check box
            if (v instanceof CheckBox) {
                if (((CheckBox) v).isChecked()) {
                    // add parsed text value to result if check box is checked
                    result = result + Integer.parseInt(((CheckBox) v).getText().toString());
                }
            }
        }
        // return result
        return String.valueOf(result);
    }
}
activity_main.xml
PHP:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/rellayout"
    tools:context="com.example.cbcalc.MainActivity" >

    <CheckBox
        android:id="@+id/chone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="5dp"
        android:text="1" />

    <CheckBox
        android:id="@+id/cbtwo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:layout_toRightOf="@id/chone"
        android:text="2" />

    <CheckBox
        android:id="@+id/cbthree"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="5dp"
        android:layout_toRightOf="@id/cbtwo"
        android:text="3" />

    <Button
        android:id="@+id/bcalc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Calc" />

    <TextView
        android:id="@+id/tvresult"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/bcalc"
        android:layout_centerHorizontal="true"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>
 
SUUUUUUUUUPER !!! das ist genau das was ich brauche!!! muss ich dann wenn ich wieder mal zu hause bin gleich testen!!! danke !!!

eine frage noch:

könnt ich z.b. 4 "seiten" - (bin mir nicht sicher ob das aktivitys sind, wie gesagt bin neu mit java und android) - mit checkboxen machen, und auf der 5ten seite steht dann das gesammtergebnis? weißt du was ich meine?

danke vorest mal für den code !!!
 
Zurück
Oben Unten