Schleifeninhalt Ausgabe.

C

coreytaylor211

Fortgeschrittenes Mitglied
5
Guten Abend,

Ich habe hier ein Problem und zwar möchte ich das jeder einzelnde Schritt ausgegeben wird.
Hier mal der Code
Code:
  @Override
		public void onClick(View view) 
		{
			// TODO: Implement this method
			double eingabe;
			EditText editText = (EditText) findViewById(R.id.programEditText1);
			
			if (editText.getText().toString().length() == 0){
				return;
			}
			eingabe = Integer.parseInt(editText.getText().toString());
			Log.d("DEBUG", "eingabe = " + eingabe );
			if (eingabe > 0){
				double c = eingabe / 2678400;
				double x = 0 ;
				Log.d("DEBUG", "eingabe = " + eingabe );
				while (eingabe >= c){
					
					for (double k = 0;k <100000000; k++)
					{	
						TextView textView = (TextView) findViewById(R.id.textView1);
						x = c * k ;
						Log.d("DEBUG", "eingabe = " + eingabe );
						Log.d("Debug", "ausgabe nach Schleife s = " + x);
						textView.setText(x+"/n"+ String.valueOf(k));
						try {
							Thread.sleep(1000);
						} catch (InterruptedException e){
							
						}
Momentan geht er erst die komplette schleife durch und gibt den letzten duchrgang aus.
 
Kürzlich war hier auch was mit etwas ähnlichem, hatte dann auch mal zum testen was in einer Schleife in eine TextView gepackt, Thread.Sleep führte bei mir dazu das nicht alles inner TV stand was drin hätte sein sollen. (hatte ich ganz blöd gemacht)

Ausserdem ist Thread.sleep in einem weiterem Thread OK, aber im Thread der Activity ist das weniger schön.

Warum deklarierst du die TextView in der Schleife "jedesmal" neu und castest sie wieder und wieder und....?

Deklarier sie vorher und initialisiere sie, einmal reicht doch aus.

Eine kleinigkeit fiel mir auch noch auf
Code:
for (double k...
Eine Integer hätte auch gereicht, würde sogar nur 4Bytes statt 8 speicher brauchen, OK, ist nicht viel, macht aber auch was aus.

Dekalrier mal einen String vor den Schleifen, in den Schleifen hängst du den Text dann an, diesen dann ausgeben.
 
Zuletzt bearbeitet:
Das funktioniert nicht weil du das im UI Thread machst.

Dieser Thread zeichnet auch die Oberfläche.

Wenn du in dem Thread nun setText() aufrufst, muss der Thread die TextView neu zeichnen.

Da der UI Thread aber niemals aus deiner Schleife rauskommt, kann er zwischendurch nicht die TextView neu zeichnen.

Erst wenn du durch bist mit der Schleife wird die TextView neugezeichnet.

Guck dir mal mein Beitrag hier an:
https://www.android-hilfe.de/forum/...mit-dauersound-hilfe.566516.html#post-7573850

Bau deine Schleife in den Asynctask und mache im onProgressUpdate() deine UI Änderungen.
 

Ähnliche Themen

M
  • maksimilian
Antworten
8
Aufrufe
1.268
jogimuc
J
S
Antworten
0
Aufrufe
757
Soni
S
Bergmann2016
Antworten
7
Aufrufe
934
swa00
swa00
Zurück
Oben Unten