Probleme beim Abspeichern von Daten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Probleme beim Abspeichern von Daten

    Hallo,

    ich bin etwas frisch an dem Thema Android drann und hab mir gleich mal n paar Fehlermeldungen eingesammel die ich nicht verstehe.

    Ich will das die Zahl aus dem Eingabefeld in dem Betrag in dem TextViwer hinzufügt und diesen ablegt.

    Wäre super wenn ihr mir helfen könntet =D

    Dies ist mein Code:

    Java-Quellcode

    1. package me.com.example.sparrechner;
    2. import java.io.BufferedReader;
    3. import java.io.File;
    4. import java.io.FileInputStream;
    5. import java.io.FileOutputStream;
    6. import java.io.IOException;
    7. import java.io.InputStreamReader;
    8. import java.io.OutputStreamWriter;
    9. import android.app.Activity;
    10. import android.os.Bundle;
    11. import android.util.Log;
    12. import android.view.Menu;
    13. import android.view.View;
    14. import android.view.View.OnClickListener;
    15. import android.widget.Button;
    16. import android.widget.EditText;
    17. import android.widget.TextView;
    18. public class SparRechner extends Activity {
    19. private static final String TAG = SparRechner.class.getSimpleName();
    20. private static final String FILENAME = TAG + ".txt";
    21. @Override
    22. public void onCreate(Bundle savedInstanceState) {
    23. super.onCreate(savedInstanceState);
    24. setContentView(R.layout.activity_spar_rechner);
    25. EditText Betrag = (EditText) findViewById(R.id.derBetrag);
    26. Betrag.setText("0");
    27. TextView Anzeige = (TextView) findViewById(R.id.textView4);
    28. Anzeige.setText("0");
    29. File f = getFilesDir();
    30. Log.d(TAG, "getFilesDir(): " + f.getAbsolutePath());
    31. Button aktualisieren = (Button) findViewById(R.id.button2);
    32. aktualisieren.setOnClickListener(new OnClickListener() {
    33. public void onClick(View v) {
    34. EditText Betrag = (EditText) findViewById(R.id.derBetrag);
    35. TextView Anzeige = (TextView) findViewById(R.id.textView4);
    36. int kosten = Integer.parseInt(load());
    37. int einrtag = Integer.parseInt(Betrag.getText().toString());
    38. kosten = kosten+ einrtag;
    39. Anzeige.setText(kosten);
    40. Betrag.setText("");
    41. }
    42. });
    43. Button hinzufuegen = (Button) findViewById(R.id.button1);
    44. hinzufuegen.setOnClickListener(new OnClickListener() {
    45. public void onClick(View v) {
    46. EditText Betrag = (EditText) findViewById(R.id.derBetrag);
    47. TextView Anzeige = (TextView) findViewById(R.id.textView4);
    48. int aktuell = Integer.parseInt(Anzeige.getText().toString());
    49. int neu = aktuell + Integer.parseInt(Betrag.getText().toString());
    50. Anzeige.setText(neu);
    51. save(Anzeige.getText().toString());
    52. }
    53. });
    54. }
    55. @Override
    56. public boolean onCreateOptionsMenu(Menu menu) {
    57. getMenuInflater().inflate(R.menu.activity_spar_rechner, menu);
    58. return true;
    59. }
    60. private String load() {
    61. StringBuilder sb = new StringBuilder();
    62. FileInputStream fis = null;
    63. InputStreamReader isr = null;
    64. BufferedReader br = null;
    65. try {
    66. fis = openFileInput(FILENAME);
    67. isr = new InputStreamReader(fis);
    68. br = new BufferedReader(isr);
    69. String s;
    70. while ((s = br.readLine()) != null) {
    71. if (sb.length() > 0) {
    72. sb.append('\n');
    73. }
    74. sb.append(s);
    75. }
    76. } catch (Throwable t) {
    77. Log.e(TAG, "load()", t);
    78. } finally {
    79. if (br != null) {
    80. try {
    81. br.close();
    82. }
    83. catch (IOException e) {
    84. Log.e(TAG, "br.close()", e);
    85. }
    86. }
    87. }
    88. if (isr != null) {
    89. try {
    90. isr.close();
    91. } catch (IOException e) {
    92. Log.e(TAG, "isr.close()", e);
    93. }
    94. }
    95. if (fis != null) {
    96. try {
    97. fis.close();
    98. } catch (IOException e) {
    99. Log.e(TAG, "fis.close()", e);
    100. }
    101. }
    102. return sb.toString();
    103. }
    104. private void save(String text) {
    105. FileOutputStream fos = null;
    106. OutputStreamWriter osw = null;
    107. try{
    108. fos = openFileOutput(FILENAME, MODE_PRIVATE);
    109. osw = new OutputStreamWriter(fos);
    110. osw.write(text);
    111. } catch (Throwable t) {
    112. Log.e(TAG, "save()", t);
    113. } finally{
    114. if (osw != null) {
    115. try {
    116. osw.close();
    117. } catch (IOException e) {
    118. Log.e(TAG, "osw.close()", e);
    119. }
    120. }
    121. if (fos != null) {
    122. try {
    123. fos.close();
    124. } catch (IOException e){
    125. Log.e(TAG, "fos.close()", e);
    126. }
    127. }
    128. }
    129. }
    130. }
    Alles anzeigen


    und für die Oberfläche habe ich den Code:

    HTML-Quellcode

    1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    2. xmlns:tools="http://schemas.android.com/tools"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent" >
    5. <Button
    6. android:id="@+id/button1"
    7. android:layout_width="wrap_content"
    8. android:layout_height="wrap_content"
    9. android:layout_alignParentBottom="true"
    10. android:layout_alignParentRight="true"
    11. android:layout_marginBottom="146dp"
    12. android:layout_marginRight="22dp"
    13. android:text="@string/Hinzufuegen" />
    14. <TextView
    15. android:id="@+id/textView4"
    16. android:layout_width="wrap_content"
    17. android:layout_height="wrap_content"
    18. android:layout_alignRight="@+id/button1"
    19. android:layout_centerVertical="true"
    20. android:text="@string/Alles"
    21. android:textAppearance="?android:attr/textAppearanceLarge" />
    22. <EditText
    23. android:id="@+id/derBetrag"
    24. android:layout_width="wrap_content"
    25. android:layout_height="wrap_content"
    26. android:layout_above="@+id/textView4"
    27. android:layout_alignParentRight="true"
    28. android:layout_marginBottom="34dp"
    29. android:ems="10"
    30. android:inputType="numberDecimal" />
    31. <TextView
    32. android:id="@+id/textView1"
    33. android:layout_width="wrap_content"
    34. android:layout_height="wrap_content"
    35. android:layout_alignParentTop="true"
    36. android:layout_centerHorizontal="true"
    37. android:layout_marginTop="14dp"
    38. android:text="@string/Heading"
    39. android:textAppearance="?android:attr/textAppearanceLarge" />
    40. <Button
    41. android:id="@+id/button2"
    42. android:layout_width="wrap_content"
    43. android:layout_height="wrap_content"
    44. android:layout_alignBaseline="@+id/button1"
    45. android:layout_alignBottom="@+id/button1"
    46. android:layout_toLeftOf="@+id/button1"
    47. android:text="@string/Aktualisieren" />
    48. <TextView
    49. android:id="@+id/textView2"
    50. android:layout_width="wrap_content"
    51. android:layout_height="wrap_content"
    52. android:layout_alignBaseline="@+id/derBetrag"
    53. android:layout_alignBottom="@+id/derBetrag"
    54. android:layout_alignParentLeft="true"
    55. android:layout_marginLeft="18dp"
    56. android:text="@string/Betrag"
    57. android:textAppearance="?android:attr/textAppearanceMedium" />
    58. <TextView
    59. android:id="@+id/textView3"
    60. android:layout_width="wrap_content"
    61. android:layout_height="wrap_content"
    62. android:layout_alignBaseline="@+id/textView4"
    63. android:layout_alignBottom="@+id/textView4"
    64. android:layout_alignLeft="@+id/textView2"
    65. android:text="@string/Gesammt"
    66. android:textAppearance="?android:attr/textAppearanceLarge" />
    67. </RelativeLayout>
    Alles anzeigen
    "Da steh ich nun, ich armer Thor,
    und bin so klug als wie zuvor. "

    Johan Wolfgang von Goethe
  • Hi Thor,

    und was geht jetzt nicht? Wird keine Datei angelegt oder wird in die Datei nix rein geschrieben? Oder bekommst irgendeine Exception?

    Ach so vielleicht noch zwei Tipps:
    1. EditText "betrag" und TextView "anzeige" kannst du auch global(Klasenvariablen) schreiben so wie Filename dann brauchst du nicht jedes mal findViewById aufrufen
    2. in Java schreib man Objekt klein also "anzeige" und "betrag".

    Mfg TItus
  • Das ist das was im Log Auftaucht, ich hab keine ahnung was da nicht passt -.-

    08-10 17:14:44.813: W/ResourceType(6271): No package identifier when getting value for resource number 0x0000000c
    08-10 17:14:44.823: D/AndroidRuntime(6271): Shutting down VM
    08-10 17:14:44.823: W/dalvikvm(6271): threadid=1: thread exiting with uncaught exception (group=0x4001d648)
    08-10 17:14:44.853: E/AndroidRuntime(6271): FATAL EXCEPTION: main
    08-10 17:14:44.853: E/AndroidRuntime(6271): android.content.res.Resources$NotFoundException: String resource ID #0xc
    08-10 17:14:44.853: E/AndroidRuntime(6271): at android.content.res.Resources.getText(Resources.java:210)
    08-10 17:14:44.853: E/AndroidRuntime(6271): at android.widget.TextView.setText(TextView.java:2951)
    08-10 17:14:44.853: E/AndroidRuntime(6271): at me.com.example.sparrechner.SparRechner$2.onClick(SparRechner.java:58)
    08-10 17:14:44.853: E/AndroidRuntime(6271): at android.view.View.performClick(View.java:2532)
    08-10 17:14:44.853: E/AndroidRuntime(6271): at android.view.View$PerformClick.run(View.java:9308)
    08-10 17:14:44.853: E/AndroidRuntime(6271): at android.os.Handler.handleCallback(Handler.java:587)
    08-10 17:14:44.853: E/AndroidRuntime(6271): at android.os.Handler.dispatchMessage(Handler.java:92)
    08-10 17:14:44.853: E/AndroidRuntime(6271): at android.os.Looper.loop(Looper.java:150)
    08-10 17:14:44.853: E/AndroidRuntime(6271): at android.app.ActivityThread.main(ActivityThread.java:4293)
    08-10 17:14:44.853: E/AndroidRuntime(6271): at java.lang.reflect.Method.invokeNative(Native Method)
    08-10 17:14:44.853: E/AndroidRuntime(6271): at java.lang.reflect.Method.invoke(Method.java:507)
    08-10 17:14:44.853: E/AndroidRuntime(6271): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
    08-10 17:14:44.853: E/AndroidRuntime(6271): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
    08-10 17:14:44.853: E/AndroidRuntime(6271): at dalvik.system.NativeStart.main(Native Method)
    08-10 17:14:49.728: I/Process(6271): Sending signal. PID: 6271 SIG: 9
    "Da steh ich nun, ich armer Thor,
    und bin so klug als wie zuvor. "

    Johan Wolfgang von Goethe
  • Hi Thor,

    also die Fehlermeldung besagt das er eine Ressource nicht findet. Um genau zu sein an dieser Stelle tritt die Exception auf:

    Quellcode

    1. 08-10 17:14:44.853: E/AndroidRuntime(6271): at me.com.example.sparrechner.SparRechner$2.onClick(SparRechner.java:5


    Ich hab mal deinen Code ausprobiert bei mir ist es diese Zeile: Anzeige.setText(neu); innerhalb der onClick für den Hinzufügen Button
    Ich vermute es liegt daran das du innerhalb der onClick noch einmal findViewById aufrufst.

    Mfg Titus
  • Hi Thor,

    klar doch:

    Java-Quellcode

    1. public class SparRechner extends Activity {
    2. private static final String TAG = SparRechner.class.getSimpleName();
    3. private static final String FILENAME = TAG + ".txt";
    4. private EditText beitrag;
    5. private TextView anzeige;
    6. @Override
    7. public void onCreate(Bundle savedInstanceState) {
    8. super.onCreate(savedInstanceState);
    9. beitrag = (EditText) findViewById(R.id.derBetrag);
    10. anzeige = (TextView) findViewById(R.id.textView4);
    11. .....
    12. }
    13. }
    Alles anzeigen


    mfg Titus
  • So ich glaub ich es ist fast geschafft.

    nur ich hab wieder ne Fehlermeldung was bedeutet das?

    08-11 20:37:04.472: D/SparRechner(391): getFilesDir(): /data/data/me.com.example.sparrechner/files
    08-11 20:37:07.800: W/ResourceType(391): No package identifier when getting value for resource number 0x00000000
    08-11 20:37:07.800: D/AndroidRuntime(391): Shutting down VM
    08-11 20:37:07.800: W/dalvikvm(391): threadid=1: thread exiting with uncaught exception (group=0x40015560)
    08-11 20:37:07.820: E/AndroidRuntime(391): FATAL EXCEPTION: main
    08-11 20:37:07.820: E/AndroidRuntime(391): android.content.res.Resources$NotFoundException: String resource ID #0x0
    08-11 20:37:07.820: E/AndroidRuntime(391): at android.content.res.Resources.getText(Resources.java:201)
    08-11 20:37:07.820: E/AndroidRuntime(391): at android.widget.TextView.setText(TextView.java:2857)
    08-11 20:37:07.820: E/AndroidRuntime(391): at me.com.example.sparrechner.SparRechner$2.onClick(SparRechner.java:59)
    08-11 20:37:07.820: E/AndroidRuntime(391): at android.view.View.performClick(View.java:2485)
    08-11 20:37:07.820: E/AndroidRuntime(391): at android.view.View$PerformClick.run(View.java:9080)
    08-11 20:37:07.820: E/AndroidRuntime(391): at android.os.Handler.handleCallback(Handler.java:587)
    08-11 20:37:07.820: E/AndroidRuntime(391): at android.os.Handler.dispatchMessage(Handler.java:92)
    08-11 20:37:07.820: E/AndroidRuntime(391): at android.os.Looper.loop(Looper.java:123)
    08-11 20:37:07.820: E/AndroidRuntime(391): at android.app.ActivityThread.main(ActivityThread.java:3683)
    08-11 20:37:07.820: E/AndroidRuntime(391): at java.lang.reflect.Method.invokeNative(Native Method)
    08-11 20:37:07.820: E/AndroidRuntime(391): at java.lang.reflect.Method.invoke(Method.java:507)
    08-11 20:37:07.820: E/AndroidRuntime(391): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    08-11 20:37:07.820: E/AndroidRuntime(391): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    08-11 20:37:07.820: E/AndroidRuntime(391): at dalvik.system.NativeStart.main(Native Method)
    "Da steh ich nun, ich armer Thor,
    und bin so klug als wie zuvor. "

    Johan Wolfgang von Goethe
  • ich danke dir für deine Geduld mit mir =D

    Java-Quellcode

    1. package me.com.example.sparrechner;
    2. import java.io.BufferedReader;
    3. import java.io.File;
    4. import java.io.FileInputStream;
    5. import java.io.FileOutputStream;
    6. import java.io.IOException;
    7. import java.io.InputStreamReader;
    8. import java.io.OutputStreamWriter;
    9. import android.app.Activity;
    10. import android.os.Bundle;
    11. import android.util.Log;
    12. import android.view.Menu;
    13. import android.view.View;
    14. import android.view.View.OnClickListener;
    15. import android.widget.Button;
    16. import android.widget.EditText;
    17. import android.widget.TextView;
    18. public class SparRechner extends Activity {
    19. private static final String TAG = SparRechner.class.getSimpleName();
    20. private static final String FILENAME = TAG + ".txt";
    21. private EditText beitrag;
    22. private TextView anzeige;
    23. @Override
    24. public void onCreate(Bundle savedInstanceState) {
    25. super.onCreate(savedInstanceState);
    26. setContentView(R.layout.activity_spar_rechner);
    27. beitrag = (EditText) findViewById(R.id.derBetrag);
    28. beitrag.setText("0");
    29. anzeige = (TextView) findViewById(R.id.textView4);
    30. anzeige.setText("0");
    31. File f = getFilesDir();
    32. Log.d(TAG, "getFilesDir(): " + f.getAbsolutePath());
    33. Button aktualisieren = (Button) findViewById(R.id.button2);
    34. aktualisieren.setOnClickListener(new OnClickListener() {
    35. public void onClick(View v) {
    36. int kosten = Integer.parseInt(load());
    37. int einrtag = Integer.parseInt(beitrag.getText().toString());
    38. kosten = kosten+ einrtag;
    39. anzeige.setText (kosten);
    40. beitrag.setText("");
    41. }
    42. });
    43. Button hinzufuegen = (Button) findViewById(R.id.button1);
    44. hinzufuegen.setOnClickListener(new OnClickListener() {
    45. public void onClick(View v) {
    46. int aktuell = Integer.parseInt(anzeige.getText().toString());
    47. int neu = aktuell + Integer.parseInt(beitrag.getText().toString());
    48. anzeige.setText(neu);
    49. save(anzeige.getText().toString());
    50. }
    51. });
    52. }
    53. @Override
    54. public boolean onCreateOptionsMenu(Menu menu) {
    55. getMenuInflater().inflate(R.menu.activity_spar_rechner, menu);
    56. return true;
    57. }
    58. private String load() {
    59. StringBuilder sb = new StringBuilder();
    60. FileInputStream fis = null;
    61. InputStreamReader isr = null;
    62. BufferedReader br = null;
    63. try {
    64. fis = openFileInput(FILENAME);
    65. isr = new InputStreamReader(fis);
    66. br = new BufferedReader(isr);
    67. String s;
    68. while ((s = br.readLine()) != null) {
    69. if (sb.length() > 0) {
    70. sb.append('\n');
    71. }
    72. sb.append(s);
    73. }
    74. } catch (Throwable t) {
    75. Log.e(TAG, "load()", t);
    76. } finally {
    77. if (br != null) {
    78. try {
    79. br.close();
    80. }
    81. catch (IOException e) {
    82. Log.e(TAG, "br.close()", e);
    83. }
    84. }
    85. }
    86. if (isr != null) {
    87. try {
    88. isr.close();
    89. } catch (IOException e) {
    90. Log.e(TAG, "isr.close()", e);
    91. }
    92. }
    93. if (fis != null) {
    94. try {
    95. fis.close();
    96. } catch (IOException e) {
    97. Log.e(TAG, "fis.close()", e);
    98. }
    99. }
    100. if (sb.toString() == "") {
    101. sb.insert(0, 1);
    102. }
    103. return sb.toString();
    104. }
    105. private void save(String text) {
    106. FileOutputStream fos = null;
    107. OutputStreamWriter osw = null;
    108. try{
    109. fos = openFileOutput(FILENAME, MODE_PRIVATE);
    110. osw = new OutputStreamWriter(fos);
    111. osw.write(text);
    112. } catch (Throwable t) {
    113. Log.e(TAG, "save()", t);
    114. } finally{
    115. if (osw != null) {
    116. try {
    117. osw.close();
    118. } catch (IOException e) {
    119. Log.e(TAG, "osw.close()", e);
    120. }
    121. }
    122. if (fos != null) {
    123. try {
    124. fos.close();
    125. } catch (IOException e){
    126. Log.e(TAG, "fos.close()", e);
    127. }
    128. }
    129. }
    130. }
    131. }
    Alles anzeigen
    "Da steh ich nun, ich armer Thor,
    und bin so klug als wie zuvor. "

    Johan Wolfgang von Goethe