1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Frage an die Profis

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von omarco, 19.12.2010.

  1. omarco, 19.12.2010 #1
    omarco

    omarco Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    1
    Registriert seit:
    20.04.2010
    Phone:
    Motorola Razr i
    Guten Tag,

    irgendwie will das Progamm beim test nicht wirklich funktionieren.

    Wir haben in der Schule mit javaeditor ein Programm für die Vigenere Verschlüsslung zu schreiben. Dieses Programm versuche ich jetzt auf android zumschreiben.
    Das Problem liegt also auf jeden fall nicht an der crypt methode, weil das mit dem javaeditor vorher auch funktioniert hat.
    Ich denke mal das das Problem an dem onclick liegt.
    vllt kann mir irgendjemand weiterhelfen?
    Vielen Danke.

    package de.test;

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

    public class testactivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */

    private Button Button01;

    //private Button Button02;


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




    Button01 = (Button)findViewById(R.id.Button01);
    Button01.setOnClickListener(this);
    // Button02 = (Button)findViewById(R.id.Button02);
    // Button02.setOnClickListener(this);



    }



    public void onClick(View v) {
    if(v == Button01){


    EditText EditText01 = (EditText) findViewById(R.id.EditText01);
    EditText EditText02 = (EditText) findViewById(R.id.EditText02);
    TextView geheimwort = (TextView) findViewById(R.id.TextView03);



    geheimwort.setText(crypt(EditText01.getText().toString(), EditText02.getText().toString()));
    }

    }
    public String crypt(String editable, String editable2){


    String Geheimtext = "";
    String text1 = editable;
    String text2 = editable2;


    text1 = text1.toUpperCase();
    text2 = text2.toUpperCase();



    for (int i = 0, j = 0; i < text1.length(); i++, j++){
    /** i ist der Zähler für den Originaltext */
    /** j ist der Zähler für das Schlüsselwort */
    char s = text1.charAt(i);
    int z = (int) s;

    if(z>=65 && z<=90){

    if( j == text1.length()) j = 0;

    /** wenn Schlüsselwort durchlaufen, wieder von vorne im Schlüssel */
    Geheimtext += (char)((text1.charAt(i) + text2.charAt(j) - 130)%26+65);
    }

    else{


    Geheimtext += s;
    j--;
    }

    }
    return Geheimtext;

    }

    }
     
    Zuletzt bearbeitet: 19.12.2010
  2. ko5tik, 19.12.2010 #2
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Eine bewährte Problemlösungstechnik ist die Einbau von Debug-Ausgaben an möglich vielen Stellen.
    Damit kann man leicht sicherstellen daß:
    - onClick() aufgerufen wurde
    - Daten aus der Eingabefeldern ausgelesen würden
    - ... und zwar richtig

    usw.
     
  3. omarco, 19.12.2010 #3
    omarco

    omarco Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    1
    Registriert seit:
    20.04.2010
    Phone:
    Motorola Razr i
    Ich benutze den debugger von eclipse. Der zeigt mir folgende breakpoints an.

    testactivity [line: 48] - onClick(View)
    testactivity [line: 61] - crypt(String, String)
    testactivity [line: 87] - crypt(String, String)
     
  4. ko5tik, 19.12.2010 #4
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Und was genau funktioniert nicht? Debugger gehört eigentlich verboten. Bau dir Debug-Statemente ein und schaue was da drin passiert. Am besten wären natürlich ordentliche Unit-Tests - aber in Android-Entwiclung geht es nicht ohne zu mocken, was eine Thema für sich ist.
     
  5. omarco, 19.12.2010 #5
    omarco

    omarco Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    1
    Registriert seit:
    20.04.2010
    Phone:
    Motorola Razr i
    Also mit dem javaeditor konnte ich sowas mit System.out.prinln() machen wie mache ich das bei android geht das genauso ?

    Was nicht funktioniert ist das hier
    geheimwort.setText(crypt(EditText01.getText().toSt ring(), EditText02.getText().toString()));

    Ich versteht auch ehrlich gesagt nicht wie dieses onClick(View v) funktioniert.
    ich hab einfach geschrieben v = button01. Ansonsten verstehe ich nicht woher der wissen soll welcher Button überhaupt gemeint ist.
     
  6. manu, 19.12.2010 #6
    manu

    manu Fortgeschrittenes Mitglied

    Beiträge:
    329
    Erhaltene Danke:
    25
    Registriert seit:
    29.03.2009
    Phone:
    Galaxy Nexus
    Die Fehlermeldung aus dem Log ist auch ganz nützlich (meistens).
    Poste die doch auch noch.

    P.S:
    Code:
    Button01.setOnClickListener(new View.OnClickListener() {  
                public void onClick(View view) {
                    //Dein Code
                    }
                });
    
    
    Den Code nehme ich eigentlich immer, ist vielleicht auch für dich leichter verständlich.
     
    Zuletzt bearbeitet: 19.12.2010
  7. omarco, 19.12.2010 #7
    omarco

    omarco Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    1
    Registriert seit:
    20.04.2010
    Phone:
    Motorola Razr i
    Da sind leider auch nur fragzeigezeichen und und eine raute :D.
     
  8. wilco, 19.12.2010 #8
    wilco

    wilco Android-Hilfe.de Mitglied

    Beiträge:
    106
    Erhaltene Danke:
    32
    Registriert seit:
    10.08.2010
    Ja, besser ist es allerdings wenn Du Deine Meldungen in's log schreibst: Log.i("Meine App", "Meine Meldung");

    Der onClick Methode wird übergeben welche View denn angeklickt wurde. Du kannst dann die jeweilige View ermitteln über "if (v.equals(myButton))". Du kannst alternativ jedem Button eine ID zuweisen, und dann nachher per v.getID() ermitteln welcher Button gedrückt wurde.

    Die setText Methode funktioniert ansonsten genau so wie Du sie auch einsetzt. Da würde ich per Log Statement mal schauen ob die Crypt Methode macht was sie soll, und mir den Text per Log ausgeben lassen.
     
    omarco bedankt sich.
  9. ko5tik, 19.12.2010 #9
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Android verwendt Java als Sprache - also geht es genau so. Und wenn du dir eine andständige IDE zulegst ( zum Beispiel IntelliJ IDEA community edition, die kostenlos ist)
    würdest du auch Log-Ausgabe von deine Händy sehen - mit all den Stacktraces usw.
     
    omarco bedankt sich.
  10. omarco, 19.12.2010 #10
    omarco

    omarco Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    1
    Registriert seit:
    20.04.2010
    Phone:
    Motorola Razr i
    Ok danke für die Tipps und für die Hilfe
    Ok es liegt auf jeden fall an der crpyt methode
    der mag meine for-schleife ganz und garnicht. Wenn ich diese auskommentiere. Funktioniert alles.

    Mache ich die Schleife wieder rein, hat der Probleme die app zu installieren bzw . zu starten. Immer wieder die selbe Fehlermeldung :
    emulator-5554 disconnected! Cancelling 'de.test.testactivity activity launch'!
    Eigentlich recht komisch.


    for (int i = 0, j = 0; i < text1.length(); i++, j++){
    /** i ist der Zähler für den Originaltext */
    /** j ist der Zähler für das Schlüsselwort */
    char s = text1.charAt(i);
    int z = (int) s;

    if(z>=65 && z<=90){

    if( j == text2.length()) j = 0;

    /** wenn Schlüsselwort durchlaufen, wieder von vorne im Schlüssel */
    Geheimtext += (char)((text1.charAt(i) + text2.charAt(j) - 130)%26+65);
    }

    else{

    Geheimtext += s;
    j--;
    }

    }
     
  11. omarco, 19.12.2010 #11
    omarco

    omarco Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    1
    Registriert seit:
    20.04.2010
    Phone:
    Motorola Razr i
    Ok hat sich erledigt. Habs mal aufs Handy gespielt es läuft auf jeden Fall.
     

Diese Seite empfehlen