Frage an die Profis

O

omarco

Ambitioniertes Mitglied
1
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:
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.
 
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)
 
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.
 
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.
 
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:
Da sind leider auch nur fragzeigezeichen und und eine raute :D.
 
omarco schrieb:
Also mit dem javaeditor konnte ich sowas mit System.out.prinln() machen wie mache ich das bei android geht das genauso ?

Ja, besser ist es allerdings wenn Du Deine Meldungen in's log schreibst: Log.i("Meine App", "Meine Meldung");

omarco schrieb:
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.

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.
 
  • Danke
Reaktionen: omarco
omarco schrieb:
Also mit dem javaeditor konnte ich sowas mit System.out.prinln() machen wie mache ich das bei android geht das genauso ?

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.
 
  • Danke
Reaktionen: omarco
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--;
}

}
 
Ok hat sich erledigt. Habs mal aufs Handy gespielt es läuft auf jeden Fall.
 

Ähnliche Themen

M
Antworten
2
Aufrufe
612
Mozart40
M
A
Antworten
1
Aufrufe
570
swa00
swa00
FabianDev
Antworten
5
Aufrufe
530
swa00
swa00
Zurück
Oben Unten