Einfacher Zähler

  • 19 Antworten
  • Letztes Antwortdatum
L

LoLmAnxD1998

Ambitioniertes Mitglied
0
Hallo Forum,

Ich bin noch blutiger Anfänger im Thema Android Apps entwickeln und habe mich erst seit ein paar Wochen damit beschäftigt. Ich habe eine recht einfache Frage mit der ich mich aber schon seit längerem rumschlage. Ich versuche eine Zahl in einem TextView aus zu geben die sich aber jedes mal um 1 steigert wenn man einen Button drückt. Das mit der Ausgabe im TextView habe ich auch schon hinbekommen aber es passiert nichts wenn man klickt.

Kann mir bitte jemand helfen ? :mellow:
 
Code? ^^
 
Sorry das war mein erstes Thema :S wie füge ich einen Code hinzu ?

Der ursprüngliche Beitrag von 13:30 Uhr wurde um 13:35 Uhr ergänzt:

Das ist der Code bis jetzt :)



Code:
		txt1 = (TextView) findViewById(R.id.hunger);
		Button apfel = (Button)findViewById(R.id.imageButton1);
	    apfel.setOnClickListener(this);
		
	    aktualisiereAnzeige();
		
	}
	private void aktualisiereAnzeige() {
		txt1.setText(Integer.toString(hunger));
	}
		
	

	@Override
	public void onClick(View button1) {
		id = button1.getId();
		if (id == R.id.imageButton1)
		    hunger =+ 10;
		    aktualisiereAnzeige();
		if (id == R.id.ausritt)
			startActivity(new Intent(this,AusrittActivity.class));
		aktualisiereAnzeige();
 
Na der eigentliche Code dürfte doch recht überschaubar sein...
Wenn du einen Beitrag schreibst, gibt es über dem Feld wo du den Text reinschreibst so ein # Symbol. Klick das an und mach die wichtigsten stellen dazwischen.
Also die Zuweisung zum TextView, die buttonClick und was du evtl. sonst noch hast
 
Habs gefunden danke :)

Der ursprüngliche Beitrag von 13:36 Uhr wurde um 13:45 Uhr ergänzt:

Ich hab jetzt schon ne Menge probiert. Es stürzt auch nicht ab oder ähnliches aber es passiert gar nichts wenn man klickt. Die Ausgabe in den TextView geht aber :S :)
 
Kannst du bitte mal den ganzen Code posten?
 
So weit ... :)

Code:
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;



public class MainActivity extends Activity   implements OnClickListener {
	
	
	
	private int hunger = 0;
	private TextView txt1;
	private int id;
	
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		ImageView frameView = (ImageView) findViewById(R.id.frameAnimation);
        Button frameAnimButton = (Button) findViewById(R.id.frameAnimationButton);
        frameAnimButton.setOnClickListener(this); 
        frameAnimButton.setOnClickListener((OnClickListener) new FrameAnimationListener(frameView));
		
		txt1 = (TextView) findViewById(R.id.hunger);
		
	 
		
	    aktualisiereAnzeige();
		
	}
	private void aktualisiereAnzeige() {
		txt1.setText(Integer.toString(hunger));
	}
		
	

	@Override
	public void onClick(View button1) {
		id = button1.getId();
		if (id == R.id.imageButton1)
		    hunger =+ 10;
		    aktualisiereAnzeige();
		
		
		    
		    
		
		
			
	}
		
		
		
	
	
	
	
	
	
	
	
	
	@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;
	}

	

}
 
Also was ich nicht verstehe ist, dass dein ImageButton angeblich die id imageButton1 hat (siehe onClick Methode) du aber diesem Imagebutton niemals ein onClickListener anmeldest und außerdem würde ich hunger+= 10 machen.
Versuche auch bei soetwas mit der Logcat zu arbeiten und lasse dir in der onlcik mal folgendes ausgeben am besten vor id = reinschreiben
Log.d("ID: " + button1.getId());

Grüße Soma
 
Danke schon mal :) . Aber kannst du das bitte als Code posten ich bin noch totaler Anfänger :)
 
Naja poste doch mal bitte noch dein Layout dann kann ich dir weiter helfen
 
Das Layout :)

Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/wallpaper" >

    <Button
        android:id="@+id/frameAnimationButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="@string/animation_button_string" />

    <ImageView
        android:id="@+id/frameAnimation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:src="@drawable/frame_animation" />

    <TextView
        android:id="@+id/hunger"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignRight="@+id/frameAnimationButton"
        android:src="@drawable/apfel" />

    <Button
        android:id="@+id/ausritt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:text="@string/ausritt" />

</RelativeLayout>
 
So und wo soll jetzt was passieren? Wenn man auf den imageButton1 klickt dann soll hochgezählt werden?

dann schau dir mal an wie man einem ImageButton ein clickEvent hinzufügt.
Android ImageButton example
Sowas in der Art zum beispiel.
 
Also ich hab jetzt ne Kleinigkeit geändert und jetzt funktioniert es so halb :S
Wenn ich jetzt das erste mal draufklicke steigt der wert von 0 auf 10 aber ab dann nicht mehr wenn ich wieder drauf klicke :S Sieht jetzt so aus :
Code:
private int hunger = 0;
	private TextView txt1;
	private int id;
	ImageButton imageButton;
	
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		ImageView frameView = (ImageView) findViewById(R.id.frameAnimation);
        Button frameAnimButton = (Button) findViewById(R.id.frameAnimationButton);
        frameAnimButton.setOnClickListener(this); 
        frameAnimButton.setOnClickListener((OnClickListener) new FrameAnimationListener(frameView));
        
		
		txt1 = (TextView) findViewById(R.id.hunger);
		
	 
		ImageButton ib1 = (ImageButton)findViewById(R.id.imageButton1);
		ib1.setOnClickListener(this);
	    aktualisiereAnzeige();
		
	}
	private void aktualisiereAnzeige() {
		txt1.setText(Integer.toString(hunger));
	}

	
		
	

	@Override
	public void onClick(View button1) {
		id = button1.getId();
		if (id == R.id.imageButton1)
		    hunger =+ 10;
		    aktualisiereAnzeige();
		
		
		    
		    
		
		
			
	}
 
hunger += 10;

Und wieso hast du einen ImageButton als globale Variable?
 
soma-web schrieb:
So und wo soll jetzt was passieren? Wenn man auf den imageButton1 klickt dann soll hochgezählt werden?

dann schau dir mal an wie man einem ImageButton ein clickEvent hinzufügt.
Android ImageButton example
Sowas in der Art zum beispiel.

Das stand so in dem link :S
 
Ich empfehle dir dich am anfang mit java außeinander zu setzen und ein anfängerbuch zu kaufen.
Das macht am meisten Sinn und die Lernkurve ist wirklich steil. Dann macht das alles auch mehr spaß.
 
Ja das hab ich schon gemacht aber ich hab es noch nicht so alles verstanden :) danke für die Hilfe :)
 
Ich würde dir ausderm empfeheln mal ab und zu Str+Shift+F zu drücken. Damit wird dein Code formatiert, damit er lesbar ist. Ist ja grauenhaft :O
 
MainActivity.java
Code:
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

    int counter;
    Button add;
    TextView display;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        counter = 0;
        add = (Button) findViewById(R.id.bAdd);
        display = (TextView) findViewById(R.id.tvDisplay);

        add.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                counter++;
                display.setText(counter += xxxxxxxxxx );
            }
        });
activity_main.xml:
Code:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/tvDisplay"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        android:gravity="center"
        android:text="COUNTER"
        android:textSize="30dp" />

    <Button
        android:id="@+id/bAdd"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tvDisplay"
        android:layout_centerInParent="true"
        android:layout_marginTop="20dp"
        android:text="+1"
        android:textSize="20dp" />

</RelativeLayout>
Damit sollte es funktionieren.

Nicht vergessen: Aller Anfang ist schwer, bin seit 3 Tagen dabei und finde die Thematik auch nicht gerade einfach. Ich denke das legt sich aber mit der Zeit. Wichtig ist nur, das man nicht einfach abschreibt, sondern auch herausfindet war was funktioniert und warum nicht. ;)

PS: das mit dem Strg+Shift+F ist bei mir nicht gerade die beste Lösung.. habe in der Formatierungseinstellung von Eclipse ein bisschen rumgespielt, da die voreingestellte mir nicht gefallen hat.
Hat jemand ein voreingestelltes Setup was brauchbarer ist, als das mitgelieferte? Ich programmiere sonst in Visual St. und da gefällt mir die Formatierung deutlich besser. (Vielleicht liegts aber auch am Java-Code, dass es etwas unübersichtlich wirkt?) Hmm...
 
Naja da hat jeder so seine persönlichen Vorlieben mir gefällt die Standardformatierung von Eclipse eigentlich ganz gut.
Das einzige, was ich immer anpasse ist das Zeilenlimit von 80 Zeichen.

Das ist mir persönlich auf heutigen BIldschirmen eindeutig zu kurz.
Was genau stört dich denn?
Ich hab jetzt gerade nicht die Formatierung von VS im Kopf, was die genau anders macht.
 
Zurück
Oben Unten