ProgressBar funktioniert nicht

C

coolz3ro

Gast
Hallo!

Ich versuche mich gerade in das Thema "Java für Android" einzuarbeiten und habe gerade ein Beispiel, bei dem ich nicht weiter komme; nämlich die ProgressBar.

In meiner XML-Datei habe ich die ProgressBar und einen Button eingefügt. Die ProgressBar soll zu Beginn den Wert "Null" haben. Wenn ich auf den Button drücke, soll dieser Wert der ProgressBar auf 10 (von 100) springen, anschließend auf 20, 30, usw.. Dafür habe ich eingefügt, dass bei Betätigung des Buttons die Methode "progtest" ausgeführt werden soll. Diese habe ich dann in meiner MainActivity definiert.

Leider funktioniert es nciht so wie gedacht. Ich drücke auf den Button - lange Zeit passiert nichts - und dann springt die Progressbar irgendwann von 0 auf 100.

Ich bitte um Hilfe!

Hier der Quellcode:

MainActivity:

Java:
package de.myApp;

import android.os.Bundle;
import android.content.Intent;
import de.myApp.SecondActivity;
import de.myApp.R;
import android.view.View;
import android.app.Activity;
import android.view.Menu;
import android.widget.ProgressBar;


public class MainActivity extends Activity {



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

    public void btnClickHandler(View v){
    	Intent myIntent = new Intent(v.getContext(), SecondActivity.class);
    	startActivityForResult(myIntent, 0);
    }
    
    public void startprogbar(View v){
    	Intent myIntent2 = new Intent(v.getContext(), ThirdActivity.class);
    	startActivityForResult(myIntent2, 0);
    }
    
    public void progtest(View v){
    	
    	ProgressBar progressbar1 = (ProgressBar) findViewById(R.id.progressbar1);
    	int counter = 0;
    	while(counter < 100){
    		try{
    			Thread.sleep(500);
    		}
    		catch(InterruptedException e){
    			e.printStackTrace();
    		}
    		counter += 10;
    		progressbar1.setProgress(counter);
    	}
    }
  
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}


Hier die XML-Datei:

[XML]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<Button android:text="@string/button1"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="31dp"
android:eek:nClick="btnClickHandler"
/>

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/button1"
android:layout_centerHorizontal="true"
android:layout_marginTop="90dp"
android:eek:nClick="startprogbar"
android:text="@string/button2" />


<ProgressBar
android:id="@+id/progressbar1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="100"
android:progress="0" />

<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button1"
android:layout_below="@+id/button2"
android:layout_marginTop="67dp"
android:eek:nClick="progtest"
android:text="@string/button3" />

</RelativeLayout>[/XML]
 

Michael...

Top Contributor
Leider funktioniert es nciht so wie gedacht. Ich drücke auf den Button - lange Zeit passiert nichts - und dann springt die Progressbar irgendwann von 0 auf 100.
Habe keine Ahnung von Android, aber mit Sicherheit ist es hier genauso wie mit Standard Java falsch einfach eine Schleife mit Thread.sleep im Basis Thread (spricht man hier auch von EDT?) laufen zu lassen. Auch hier müssen solche Sachen in einem separaten Thread laufen, damit die Aktualisierung der GUI nicht blockiert wird.
Vergleichbares schon mal in einer "normalen" Java (Swing) Anwendung gemacht?
 
C

coolz3ro

Gast
Leider habe ich auch in Java im Allgemeinen nur Grundkenntnisse aus dem Studium. Könntest du mir erklären, wie man es richtig machen würde? (Wie die konkrete Implementierung aussieht.)
 

Michael...

Top Contributor
Habe keine Ahnung von Android. In Basic Java würde man mit einem Thread, Timer, SwingWorker o.ä. arbeiten, in dem rechenaufwändige (Thread.sleep()) Prozesse laufen und aus dem die ProgressBar aktualsiert wird. Keine Ahnung was es da unter Android für Möglichkeiten/Vorgehensweisen gibt.
 
C

coolz3ro

Gast
Ja, danke Slater. das Beispiel habe ich auch schon gefunden.

Laut dem Buch, mit dem ich aber arbeite, soll es auch einfacher gehen - nämlich in der Art, wie ich es hier beschrieben habe.
 
S

SlaterB

Gast
laut Büchern war schon vieles wahr, besonders laut ungenannten Büchern,

die Suchbegriffe sind geliefert, schau dir die ersten 10 oder mehr Links an, falls eine einfache Variante dabei ist kann man weiter überlegen,
ansonsten bisschen eigenwillig, die bekanntesten Lang-Beispiele abzulehnen, nicht funktionierende Kurz-Beispiele zu verwenden und dann doch wieder eine lauffähige Variante haben zu wollen..

aber bisher haben hier ja nur 2 Android-Fremdlinge geantwortet, vielleicht kommt noch ein richtiger Experte ;)
 
C

coolz3ro

Gast
Wäre toll, wenn noch jemand einen konkreten Vorschlag hätte, wie man auf Grundlage des Quellcodes oben das Problem lösen kann.

Das Buch heißt im Übrigen "Java für Android" von Christian Bleske.
 

Michael...

Top Contributor
Laut dem Buch, mit dem ich aber arbeite, soll es auch einfacher gehen - nämlich in der Art, wie ich es hier beschrieben habe.
Wie genau geht es denn in dem Buch? Ich kenne es leider nicht. Wenn Du die while Schleife in einen separaten Thread legst (mit SlaterBs verlinkten Beispiel drei zusätzliche Zeilen) sollte es doch laufen - dass es noch einfacher geht, kann ich mir nicht vorstellen.
 
C

coolz3ro

Gast
Im Buch steht nur Folgendes:


Java:
progressbar1 = (ProgressBar)findViewById(R.id.progressbar1);
    	while(pBarCounter != 100){
    		try{
    			Thread.sleep(500);
    		}
    		catch(InterruptedException e){
    			e.printStackTrace();
    		}
    		pBarCounter += 10;
    		progressbar1.setProgress(pBarCounter);
    	}

und als XML-Datei:

[XML]
<ProgressBar
android:id="@+id/progressbar1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:max="100"
android:progress="0" />

[/XML]
 
C

coolz3ro

Gast
Eclipse merkt zum Java-Code an:

progressbar1 und pBarCounter cannot be resolved to a variable
 
S

SlaterB

Gast
@Michael...

nur 3 Zeilen? das wäre ja was, hätte ich mir nicht einfach so getraut vorzuschlagen,
wenn dann aber auch gleich komplett erklären, sonst gemein,

also wohl
> new Thread(new Runnable() {
> public void run() {
in Zeile 35


und
> } }).start();
in Zeile 48?

dann mal hoffen dass alles funktioniert von dieser Zusammenarbeit zweier Laien, die anscheinend nie Android programmiert haben ;)
 
C

coolz3ro

Gast
Das funktioniert tatsächlich! Hmm... aber das war sicher nicht im Sinne des Buches... ich bin leider noch nicht davon überzeugt, dass es nciht auch einen anderen Weg gibt und ich nur irgend etwas dummes übersehen habe. Aber eure Antworten waren schonmal wirklich sehr hilfreich. Es funktioniert immerhin jetzt schonmal :)
 
S

SlaterB

Gast
was hat es eigentlich mit startprogbar() + ThirdActivity auf sich, was mach die ThirdActivity?

ist die Methode progtest() von dir oder aus dem Buch, wer ruft die auf welche Weise auf?
falls irgendwie eine Activitiy für sich läuft, wäre diese vielleicht nebenläufig und der Code aus dem Buch dort gut aufgehoben
 
C

coolz3ro

Gast
Da ich noch in der Lernphase bin, hab ich ein bisschen "rumgespielt" und verschiedene Sachen ausprobiert. startprogbar() und ThirdActivity sind Relikte aus diesem "Rumprobieren".

Die Methode progtest() habe ich geschrieben, nachdem der Quellcode aus dem Buch nciht so richtig funktioniert hat. Allerdings ist er ja wie du siehst recht ähnlich zum Code aus dem Buch, den ich weiter unten gepostet habe. Die Methode progtest() wird ja, wie ich im Anfangstext geschrieben habe, aufgerufen, wenn ein Button auf dem Startview betätigt wird.
 
S

SlaterB

Gast
der Block an sich wie aus dem Buch wird ja auch von niemanden angezweifelt,
es ist eben auch entscheidend, wo der steht, ob in run eines Threads oder nicht, ob in einer Activity, wer die zugehörige Methode aufruft usw.

wenn das Buch nicht den Gesamtblick behält, dann nur halbe Miete
 
C

coolz3ro

Gast
Da hast du absolut recht. Ich hätte den Block jetzt in den OnCreate Block geschrieben, weil ich wollte, dass beim Start der Application eben direkt die ProgressBar mit gestartet wird.
Also dies nicht funktioniert hat, habe ich mir schon gedacht: Mag sein, dass es daran liegt, dass ich den Block an die falsche Stelle gesetzt habe. Deswegen der "Umweg" über den Button, den ich mir erstellt habe, der wiederum eine Methode aufruft, die dafür sorgt, dass die ProgressBar aktiviert wird. Das hatte ja aber auch nciht funktioniert.

Nun bin ich gerade dabei die ProgressBar zu konfigurieren und wollte im XML-File die Übergänge zwischen den einzelnen "Ladestufen" (also 10 Prozent, 20 Prozent, usw.) etwas smoother ausfallen lassen. Denn bisher springt der Balken von 10 auf 20 Prozent und es gibt keine fließende Bewegung.
Dafür erschien mir das Attribut "android:interpolator" sinnvoll. (Beschreibung: Defines the interpolator used to smooth the animation movement in time.). Leider muss man dem Ganzen ja einen Wert zuweisen und ich weiß nicht, welche Möglichkeiten es gibt!
(Was ich damit meine ist: Bei "android:layout_width" muss ich auch entweder schreiben android:layout_width="fill_parent" oder android:layout_width="wrap_content" und nicht nur einfach "android:layout_width".)

Auf der offiziellen Hilfeseite steht:

"Defines the interpolator used to smooth the animation movement in time.

Must be a reference to another resource, in the form "@[+][package:]type:name" or to a theme attribute in the form "?[package:][type:]name".

This corresponds to the global attribute resource symbol interpolator."

Aber was soll ich damit anfangen... :(
 
S

SlaterB

Gast
nun ja, 'android:interpolator example' wäre wieder eine Variante, scheint ganz was anderes zu sein,

ich sage tschüss
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Progressbar aktualisieren Java Basics - Anfänger-Themen 17
C ProgressBar updaten Java Basics - Anfänger-Themen 4
felix92 MP3-Player ProgressBar Java Basics - Anfänger-Themen 29
Y Progressbar beim Mysqldump Java Basics - Anfänger-Themen 3
T Progressbar füllen? Java Basics - Anfänger-Themen 3
X BufferedWriter Dauer in ProgressBar ausgeben? Java Basics - Anfänger-Themen 2
1 Erste Schritte Progressbar füllen ?? Java Basics - Anfänger-Themen 5
K Erste Schritte Progressbar geht nicht Java Basics - Anfänger-Themen 5
P Progressbar auf der Console Java Basics - Anfänger-Themen 12
P Aktualisierungsproblem mit Progressbar Java Basics - Anfänger-Themen 5
L ProgressBar neu positionieren Java Basics - Anfänger-Themen 12
M jLabel aktuallisieren bzw Progressbar für Zeitanzeige Java Basics - Anfänger-Themen 5
M FTP Upload Applet - ProgressBar Java Basics - Anfänger-Themen 5
C Auf ProgressBar von zwei verschiedenen .class Dateien zugrei Java Basics - Anfänger-Themen 2
P Label nicht bei Progressbar zu sehen Java Basics - Anfänger-Themen 8
G ProgressBar ist verdeckt Java Basics - Anfänger-Themen 2
E ProgressBar für Kopieraktion Java Basics - Anfänger-Themen 21
H Wie hier die Progressbar benutzen? Java Basics - Anfänger-Themen 8
B Problem mit ProgressBar Java Basics - Anfänger-Themen 4
C Farbe von ProgressBar ändern Java Basics - Anfänger-Themen 3
G Progressbar aktualisiert nicht Java Basics - Anfänger-Themen 3
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
M Operatoren Strings mit Vergleichsoperatoren, funktioniert das? Java Basics - Anfänger-Themen 9
Garrit1994 Continue funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
B Methoden Übergebe Variabel funktioniert nicht Java Basics - Anfänger-Themen 17
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
Avalon Warum funktioniert eine Bedingung und eine andere nicht? Java Basics - Anfänger-Themen 2
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
U Wie genau funktioniert der ! Operator Java Basics - Anfänger-Themen 3
stormyark 4 Bit in einer for-schleife funktioniert nicht Java Basics - Anfänger-Themen 3
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
M Java printf(Locale.... funktioniert nicht Java Basics - Anfänger-Themen 3
N Wieso funktioniert die Deklaration nicht Java Basics - Anfänger-Themen 3
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
districon Backtracking funktioniert nicht ganz Java Basics - Anfänger-Themen 3
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
S Math.random funktioniert nicht Java Basics - Anfänger-Themen 5
S Schleife funktioniert nicht Java Basics - Anfänger-Themen 2
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
J ActionListener von JCheckBox im Knoten von JTree funktioniert nicht Java Basics - Anfänger-Themen 2
C System.out.println - Parameterübergabe funktioniert nicht Java Basics - Anfänger-Themen 2
JD_1998 Hilfsmethode if return funktioniert nicht Java Basics - Anfänger-Themen 2
C JButton Text 2 Mal ändern funktioniert nicht Java Basics - Anfänger-Themen 8
T % funktioniert nicht Java Basics - Anfänger-Themen 2
D e(fx)clipse installieren funktioniert nicht Java Basics - Anfänger-Themen 3
D GPIO Nutzung mit Pi4J Library auf Raspberry funktioniert nicht Java Basics - Anfänger-Themen 3
F Java GUI-PaintComponent funktioniert nicht Java Basics - Anfänger-Themen 1
J equals funktioniert nicht - Warum Java Basics - Anfänger-Themen 13
L hilfe run button funktioniert nicht Java Basics - Anfänger-Themen 13
I Array funktioniert nicht. Java Basics - Anfänger-Themen 2
T if else Befehl funktioniert nicht richtig Java Basics - Anfänger-Themen 27
V_Fynn03 Erste Schritte BubbleSort Quelltext funktioniert noch nicht Java Basics - Anfänger-Themen 1
V_Fynn03 Erste Schritte JButton funktioniert nicht trotz richtiger Methode. Java Basics - Anfänger-Themen 17
R Erste Schritte Eclipse - Java - System.out.println(); funktioniert nicht Java Basics - Anfänger-Themen 2
G Programm mit Schleife funktioniert nicht Java Basics - Anfänger-Themen 5
T Redirect funktioniert nicht Java Basics - Anfänger-Themen 3
R Mein Plugin funktioniert nicht? Java Basics - Anfänger-Themen 10
J Zufallszahl funktioniert nicht Java Basics - Anfänger-Themen 27
D Klassen add Methode funktioniert nicht. Java Basics - Anfänger-Themen 31
J ImagaIO funktioniert nicht unter Ubuntu Java Basics - Anfänger-Themen 23
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
N Wochentagberechner Ausgabe funktioniert nicht Java Basics - Anfänger-Themen 7
G Mein Java Projekt funktioniert nicht Java Basics - Anfänger-Themen 5
J Einlesen von Datei funktioniert nicht Java Basics - Anfänger-Themen 8
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
P Zeichenkette Zeichen ausschlißen funktioniert nicht richtig Java Basics - Anfänger-Themen 9
F Primzahlsuche Schleife funktioniert nicht, HILFE! Java Basics - Anfänger-Themen 8
M Methoden Arrays.deepequals() funktioniert nicht Java Basics - Anfänger-Themen 2
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
S JDK 9 für Windows 32 bit installiert, aber es funktioniert nix Java Basics - Anfänger-Themen 6
F Input/Output die eine txt-Datei funktioniert die andere nicht Java Basics - Anfänger-Themen 8
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben