Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

29.03.2014, 13:58

[JAVA-Android] Click-Counter mit Speicherfunktion

Hallo,

ich habe ein kleines Problem beider Umsetzung meines ersten "Projektes". Ich möchte eine Android App programmieren, die zählt, wie oft auf einen Knopf geklickt wurde und diese Zahl dann auch anzeigt. Zudem soll diese Anzahl am besten automatisch gespeichert werden. Leider weiß ich nicht wirklich wie ich das umsetzen soll. Das mit dem Klickzähler habe ich hinbekommen, das Speichern der Zahl in einer Textdatei auch, nur wie das Auslesen der Zahl beim Spielstart klappen soll, weiß ich nicht. Ich würde mich sehr über eine hilfreiche Antwort (eventuell auch ein Link oder so) freuen.
P.S.: bei Google habe ich natürlich schon gesucht, nur weiß ich nicht wie ich Speichern & laden mit dem Zähler verbinden kann.

Tankard

Treue Seele

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

2

29.03.2014, 14:21

http://lmgtfy.com/?q=android+java+textdatei+lesen

Du kannst doch schon eine Datei schreiben, was ist dein Problem beim Dateilesen?

3

29.03.2014, 16:19

Hier erstmal mein aktueller Code:
MainActivity.java

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.philipp.diamondclick;


import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;

import android.app.Activity;
import android.content.Context;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View.OnClickListener;


public class MainActivity extends Activity {
   

    TextView txtCount;
    Button btnCount;
    int count = 0;

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

        txtCount = (TextView)findViewById(R.id.textView1); 
        txtCount.setText(String.valueOf(count));
        btnCount = (Button)findViewById(R.id.button1);       

        btnCount.setOnClickListener(new OnClickListener() {
             public void onClick(View arg0) {
                count++;
                txtCount.setText(String.valueOf(count));
             }
          });

    }
    
    
    public void speichern (View view) {
        
        
        try {
            File myFile = new File("/sdcard/mysdfile.txt");
            myFile.createNewFile();
            FileOutputStream fOut = new FileOutputStream(myFile);
            OutputStreamWriter myOutWriter = 
                                    new OutputStreamWriter(fOut);
            myOutWriter.append(txtCount.getText());
            myOutWriter.close();
            fOut.close();
            Toast.makeText(getBaseContext(),
                    "Erfolgreich gespeichert",
                    Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            Toast.makeText(getBaseContext(), e.getMessage(),
                    Toast.LENGTH_SHORT).show();
        }
    }
}

activity_main.xml:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginTop="20dp"
        android:layout_centerHorizontal="true"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="14dp"
        android:text="Click" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button1"
        android:layout_centerHorizontal="true"
        android:text="Speichern"
        android:onClick="speichern" />

</RelativeLayout>

Nur jetzt weiß ich immer noch nicht, wie ich beim Starten der App auslesen kann, welche Zahl gespeichert wurde und diese dann weiter nutzen kann. Wie ich die Zahl auslese weiß ich, nur halt nicht wie ich die dann weiter nutzen kann :/

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

4

29.03.2014, 16:39

Lädst du schon irgendwo?
Dort setzt du dann dein "count" auf diese Zahl.

5

29.03.2014, 16:57

Nein, weil ich das schon versucht habe mehrmals, aber das einfach nicht klappen will. Also ich bin zu doof dazu :D

Tankard

Treue Seele

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

6

29.03.2014, 17:10

Einfach beim Start die Datei lesen und das Ergebnis als int in count speichern. Was genau hängst du dabei? Was/Wie hast du es denn schon versucht?

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

7

29.03.2014, 17:23

Jup, der Code dazu wäre super.
Hattest du Probleme das int aus der Datei zu parsen?

8

30.03.2014, 11:02

Also ich habe jetzt das hier, nur es funktioniert nicht. Erst wird die geladene Zahl gezeigt, aber wenn ich dann klicke geht's wieder bei 0 los.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import android.app.Activity;
import android.content.Context;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View.OnClickListener;


public class MainActivity extends Activity {
   

    TextView txtCount;
    Button btnCount;
    int count = 0;

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

        txtCount = (TextView)findViewById(R.id.textView1); 
        txtCount.setText(String.valueOf(count));
        btnCount = (Button)findViewById(R.id.button1);     
        
        
        
        try {
            File myFile = new File("/sdcard/mysdfile.txt");
            FileInputStream fIn = new FileInputStream(myFile);
            BufferedReader myReader = new BufferedReader(
                    new InputStreamReader(fIn));
            String aDataRow = "";
            String aBuffer = "";
            while ((aDataRow = myReader.readLine()) != null) {
                aBuffer += aDataRow + "\n";
            }
            txtCount.setText(aBuffer);
            count = Integer.parseInt(txtCount.getText().toString());
            myReader.close();
            Toast.makeText(getBaseContext(),
                    "Spielstand geladen",
                    Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            Toast.makeText(getBaseContext(), e.getMessage(),
                    Toast.LENGTH_SHORT).show();
        }
        
        
        
          

        btnCount.setOnClickListener(new OnClickListener() {
             public void onClick(View arg0) {
                count++;
                txtCount.setText(String.valueOf(count));
             }
          });

    }
    
    
    public void speichern (View view) {
        
        
        try {
            File myFile = new File("/sdcard/mysdfile.txt");
            myFile.createNewFile();
            FileOutputStream fOut = new FileOutputStream(myFile);
            OutputStreamWriter myOutWriter = 
                                    new OutputStreamWriter(fOut);
            myOutWriter.append(txtCount.getText());
            myOutWriter.close();
            fOut.close();
            Toast.makeText(getBaseContext(),
                    "Erfolgreich gespeichert",
                    Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            Toast.makeText(getBaseContext(), e.getMessage(),
                    Toast.LENGTH_SHORT).show();
        }
    }
}

9

30.03.2014, 12:58

Wie kann ich die Zahl aus der Datei richtig als INT count speichern? Wenn ich die App öffne bekomme ich den Fehler Invalid int:"diegespeichertezahl" eingeblendet.
Edit: Habs jetzt doch anders noch geschafft:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package com.philipp.diamondclick;



import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View.OnClickListener;


public class MainActivity extends Activity {
   

    TextView txtCount;
    Button btnCount;
    int count;
    int integerZahl;
    int intZahl;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txtCount = (TextView)findViewById(R.id.textView1); 
        txtCount.setText(String.valueOf(count));
        btnCount = (Button)findViewById(R.id.button1);     
        
        
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
        String name = preferences.getString("text","");
        if(!name.equalsIgnoreCase(""))
        {
            txtCount.setText(String.valueOf(name));
            count = Integer.parseInt(txtCount.getText().toString());
        }
      
          

        btnCount.setOnClickListener(new OnClickListener() {
             public void onClick(View arg0) {
                //count++;
                //txtCount.setText(String.valueOf(count));
                 count++;
                 txtCount.setText(String.valueOf(count));
             }
          });

    }
    
    public void speichern (View view) {
        
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
          SharedPreferences.Editor editor = preferences.edit();
          editor.putString("text", txtCount.getText().toString());
          editor.commit();
        
    }
    public void speichern2 (View view) {
        
        
        try {
            File myFile = new File("/sdcard/mysdfile.txt");
            myFile.createNewFile();
            FileOutputStream fOut = new FileOutputStream(myFile);
            OutputStreamWriter myOutWriter = 
                                    new OutputStreamWriter(fOut);
            myOutWriter.append(txtCount.getText());
            myOutWriter.close();
            fOut.close();
            Toast.makeText(getBaseContext(),
                    "Erfolgreich gespeichert",
                    Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            Toast.makeText(getBaseContext(), e.getMessage(),
                    Toast.LENGTH_SHORT).show();
        }
    }
}

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »ClashOfClansPhil« (30.03.2014, 18:57)


Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

10

31.03.2014, 13:14

Also klappt jetzt alles? Hast dir da übrigens eine schöne Sache als erstes Projekt ausgesucht:) Da gibt es schon einige Dinge die zu beachten sind und die du machen musst, aber es ist nicht zu groß um dich zu sehr zu überfordern. Weiter so:)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige