Announcement

Collapse
No announcement yet.

J2ME (Java Movile)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • J2ME (Java Movile)

    Hallo Leute,

    ich bin neu Hier also bitte nicht zu hart sein, fals ich was falsch mach.


    Ich hab 1 Textfeld und ein Command Speichern
    Was ich jetzt machen will ist das, was ich in das Textfeld schreibe, in eine txt-Datei zu speichern.
    Und zwar in die, die ich im public Vector loadlist() aufgerufen habe.
    Also es liest den Inhalt der txt-Datei Zeile für Zeile in den StringBuffer, und ich will dass das, was ich in dem Textfeld reingeschrieben habe beim klick auf speichern mit dem Inhalt aus der txt-Datei wieder in die txt-Datei gespeichert wird.

    Das hab ich bis jetzt:

    Code:
    package handytest;
    
    import java.io.*;
    import java.util.Vector;
    import javax.microedition.lcdui.*;
    import javax.microedition.midlet.*;
    
    public class handy extends MIDlet implements CommandListener {
    
    	Form hinzufügen = new Form("Einträge hinzufügen");
    	
    	TextField tfname = new TextField("Name:", "", 50, 0);
    	
    	static final Command speichern = new Command("Speichern",Command.SCREEN,2);
        static final Command exitCommand = new Command("Exit", Command.STOP, 1);
    
    	
    	public handy() 
    	{
    		hinzufügen.append(tfname);
    		hinzufügen.addCommand(exitCommand);
    	    hinzufügen.addCommand(speichern);
    	    hinzufügen.setCommandListener(this);
    	}
    
    	
    	public Vector loadlist()
        {
          	 DataInputStream dis = new DataInputStream(getClass().getResourceAsStream("/buch.txt"));
          	 StringBuffer sb = new StringBuffer();
          	 
          	 Vector lines = new Vector();
          	 int i=0 ;
          	 
          	 try{
          	 while ((i = dis.read()) > -1)
          	 		{ 
          		 	char ch = (char)i;
          		 	if (ch == '\n')
          		 		{ lines.addElement(sb.toString());
          		 		sb.delete(0,sb.length());
          		 		}	
          		 	else 
          		 		sb.append(ch);
          	 		}
          	    dis.close();
          	    }
          	    catch (IOException e) {} 
          	return lines;
        }
    	
    
    	public void startApp() {
    		Display display = Display.getDisplay(this);
    		display.setCurrent(hinzufügen);
    	}
    
    	
    	public void pauseApp()
    	{
    	    tfname = null;
    	    hinzufügen = null;
    	}
    
    	
    	public void destroyApp(boolean unconditional) 
    	{
    		notifyDestroyed();
    	}
    	
    	
    	public void commandAction(Command c, Displayable d) {
    
    		String label = c.getLabel();
    		 if (label.equals("Exit"))
          	 {
    			destroyApp(true);
          	 } 
    		 if (label.equals("Speichern"))
    		 {
    			loadlist();
    	 		return;
    	 	 }
    	}
    }

    Ich hab es zwar Im normalen Java geschafft, aber leider gibt es da manche sachen nich im J2ME und nun weiß ich leider nicht genau wie ich des angehen soll.

    Hoff ihr könnt mir weiterhelfen.

    Gruß
    Stefan
    Zuletzt editiert von MC_-Basstard; 14.01.2010, 15:29.

  • #2
    Die Frage ist unverständlich. Was ist unter

    und ich will dass das, was ich in dem Textfeld reingeschrieben habe beim klick auf speichern mit dem Inhalt aus der txt-Datei wieder in die txt-Datei gespeichert wird.
    Soll das rangehangen werden? Ersetzen?

    Worin besteht jetzt nun genau die Frage?
    Wie etwas aus einem Textfeld gelesen wird? Wie etwas in eine Datei geschrieben wird?
    Christian

    Comment


    • #3
      Tut mir leid wenns unverständlich ist.
      Also:

      Ich habe eine txt-Datei in der etwas darin steht z.b.

      Mike Mayer; IT
      Susan Hoch; AS
      Michael Groß; TR

      Ich möchte nun in dem Textfield etwas hineinschreiben z.B. Stefan Weiß; BG, und dies in die txt-Datei mit dazu speichern, das am ende des drin steht:

      Mike Mayer; IT
      Susan Hoch; AS
      Michael Groß; TR
      Stefan Weiß; BG

      Also ich würde gern etwas in das Textfeld schreiben, dann auf Speichern klicken, und dann das, was ich ins Textfeld geschrieben habe, in der txt-Datei unter dessen Inhalt stehen haben.

      Comment


      • #4
        Das ist doch ein extrem umständliches Vorgehen. Wie willst du feststellen, was dazu gekommen ist? Was ist, wenn schon bestehende Daten verändert wurden?

        Es ist doch besser, dass der Inhalt des Textfeldes die Datei komplett ersetzt.
        Christian

        Comment


        • #5
          Im Java am PC hab ich den Inhalt der Datei in nen Stringbuffer eingelesen (so wie hier auch) und hab das durch den Befehl getText() (also das was ich in das Textfield geschrieben habe) über nen String auch in den Stringbuffer eingelesen und dies dann alles zusammen wieder in die txt-datei gespeichert

          sieher hier:

          Code:
          ...
          
          String text = new String("");
          String zahl = new String("");
          TextField tfName;
          TextField tfNummer;
          
          ...
          
          public void schreiben() throws IOException{
                  text = tfName.getText();
                  zahl = tfNummer.getText();
                  final List<String> lines = new ArrayList<String>();
                  try{
                      FileReader fr = new FileReader("Kopie von buch.txt");   
                      BufferedReader br = new BufferedReader(fr);
                      String zeile = null;
                      while( (zeile = br.readLine()) != null )
                      {
                          lines.add(zeile);
                      }
                      lines.add(text + "; " + zahl + ";");
                      br.close();
           
                      Collections.sort(lines, String.CASE_INSENSITIVE_ORDER);
           
                      BufferedWriter writer = new BufferedWriter(new FileWriter("Kopie von buch.txt"));
                      for (String line : lines) {
                          writer.write(line);
                          writer.newLine();
                      }
                      writer.close();
                      tfName.setText("");
                      tfNummer.setText("");
                  }
                  catch(Exception e){}
              }
          
          ...

          Und dies versuch ich jetzt aufs Handy zu bringen, was leider sehr schwierig ist, da es hier den Befehl getText() nicht gibt.


          Das dumme ist, das ich auf ein Telefonbuch hin arbeiten soll (von meiner Firma aus) und dies jetzt quasi das Hinzufügen von einer neuen Person + Nummer werden soll.
          In der txt-Datei stehen alle Bisherigen Mitarbeiter + Nummer die ich lade und in einer List öffne (quasi wie im Telefonbuch) das kann ich nicht alles löschen und im Textfeld wieder eingeben.

          Hast du da ne Idee dazu wie ich des sonst machen könnte?

          Gruß
          Stefan

          Comment


          • #6
            Irgendwie sind deine Erklärungen widersprüchlich.

            Was steht denn nun in dem Textfeld drin? Alles oder nur das was neu eingegeben wurde. Wenn alles drin steht, erschließt sich mir nicht, warum auch nicht alles wieder gespeichert werden kann.

            Wenn nur das Neue drin steht, kann man das an die Datei anhängen.

            da es hier den Befehl getText() nicht gibt.
            http://java.sun.com/javame/reference/apis/jsr118/

            und mal getString probiert??
            Zuletzt editiert von Christian Marquardt; 15.01.2010, 11:48.
            Christian

            Comment


            • #7
              Ok sry dass ich nicht besonders gut erklären kann ich werds nochmal versuchen.

              Und danke mit der Idee mit dem getString() muss es nur nich gehen was ich vorhabe.


              Code:
              ...
              
              public class handy extends MIDlet implements CommandListener {
              
              	Form hinzufügen = new Form("Einträge hinzufügen");
              	
              	TextField tfname = new TextField("Name:", "", 50, 0);
              	
              	static final Command speichern = new Command("Speichern",Command.SCREEN,2);
                              static final Command exitCommand = new Command("Exit", Command.STOP, 1);
                  
                              String text = new String("");
              	String zahl = new String("");
                  
                              char ch;
              
              	
              	public handy() 
              	{
                                  hinzufügen.append(tfname);
              	    hinzufügen.addCommand(exitCommand);
              	    hinzufügen.addCommand(speichern);
              	    hinzufügen.setCommandListener(this);
              	}
              
              	
              	public Vector loadlist()
                  {	
                               text = tfname.getString();
                    	 DataInputStream dis = new DataInputStream(getClass().getResourceAsStream("/buch.txt"));
                    	 StringBuffer sb = new StringBuffer();
                    	 
                    	 Vector lines = new Vector();
                    	
                               try{
                    	 while ((dis.readChar()) > -1)
                    	        { 
                    	             if (ch == '\n')
                    		    { lines.addElement(sb.toString());
                    		    sb.delete(0,sb.length());
                    		    }	
                    	             else 
                    		    sb.append(ch);
                    	        }
                    	    lines.addElement(text + "; ");
                    	    dis.close();
                    	    tfname.setString("");
                    	    }
                    	    catch (IOException e) {} 
                    	return lines;
                  }
              	
              
              	public void startApp() {
              		Display display = Display.getDisplay(this);
              		display.setCurrent(hinzufügen);
              	}
              
              	
              	public void pauseApp()
              	{
              	}
              
              	
              	public void destroyApp(boolean unconditional) 
              	{
              		notifyDestroyed();
              	}
              	
              	
              	public void commandAction(Command c, Displayable d) {
              
              		String label = c.getLabel();
              		 if (label.equals("Exit"))
                    	 {
              			destroyApp(true);
                    	 } 
              		 if (label.equals("Speichern"))
              		 {
              			loadlist();
              	 		return;
              	 	 }
              	}
              }

              Ich habe eine txt-Datei da steht jetzt drinnen:

              Stefan;
              Peter;
              Markus;


              Jetzt will ich in das Textfeld Manuel reinschreiben.
              Wenn ich dann auf Speichern klicke soll es Manuel in die txt-Datei hinzu Speichern

              Dann steht drinnen:

              Stefan;
              Peter;
              Markus;
              Manuel;


              Ich möchte nur einen Namen ins Textfeld schreiben und nur diesen dann in die txt-Datei zu deren bisherigen Inhalt hinzuspeichern.

              Hoffe man weiß jetzt was ich vor habe.

              Gruß
              Stefan

              Comment


              • #8
                Und danke mit der Idee mit dem getString() muss es nur nich gehen was ich vorhabe.
                Den Satz verstehe ich nicht.

                Ausweislich

                http://java.sun.com/javame/reference...TextField.html

                gibt getString den Text des Eingabefeldes zurück.

                Mittels der Klasse Fileconnection

                http://developers.sun.com/mobility/a...ileconnection/
                sollte das Lesen undSchreiben funktionieren.

                Ggf. Datei komplett einlesen, Neue Werte hinzufügen und wieder speichern
                Christian

                Comment


                • #9
                  sollte heißen:

                  Und danke mit der Idee mit dem getString(), jetzt muss es nur noch so gehen wie ich es vorhabe.

                  Danke für die Links dann werd ich mir das mal anschaun.

                  Gruß
                  Stefan

                  Comment


                  • #10
                    Also ich glaube Fileconnection ist für das was ich grad machen will nich des richtige, da ich nicht auf irgendeine Datei, die auf dem Handy liegt zugreifen will, sondern auf eine txt-Datei die ich im bin Ordner habe.

                    Gruß
                    Stefan

                    Comment

                    Working...
                    X