D
Droidspirit
App-Anbieter (In-App)
- 50
Hallo,
ich bin gerade dabei ein bißchen mit ProgressBars rumzuspielen. Dafür habe ich 2 Stück in einer Activity bzw. xml erstellt. Die eine habe ich im Standard-Style erstellt und die andere in einem horizontalen Design mit
Mein erstes Problem ist, dass die, die ich im Standard-Design erstellt habe, also ganz einfach:
falsch angezeigt wird. Im Anhang habe ich mal ein Screenshot angehängt. Eigentlich sollte die obere ProgressBar aber doch so aussehen wie hier.
Kann mir jemand sagen, was ich da falsch gemacht habe?
Und zu meinem zweiten Problem:
In der Activity starte ich einen Thread, in dem ich einen int-Wert hochzähle und das an die horizontale ProgressBar weitergebe. Diese zählt somit hoch.
Hier erstmal der Code der Activity:
Ich übergebe dem TextView im Thread den String "Status: In Progress...". Wenn der Thread fertig bzw. beendet ist, möchte ich dass der Status der TextView sich in "done" ändert. Und eben genau hier ist der Knackpunkt. Ich weiß nicht, wie ich herausfinden kann, wann der Thread beendet ist. Wenn ich nach der while-Schleife versuche dem TextView über die setText() einen String mitzugeben, bekomme ich hier eine Exception, dass dies im falschen Thread übergeben worden ist. Über eine Callback-Methode habe ich es auch schon versucht, das hat aber irgendwie auch nicht funktioniert.
Kann mir hier jemand einen Tipp geben?
Danke und viele Grüße
ich bin gerade dabei ein bißchen mit ProgressBars rumzuspielen. Dafür habe ich 2 Stück in einer Activity bzw. xml erstellt. Die eine habe ich im Standard-Style erstellt und die andere in einem horizontalen Design mit
Code:
style="?android:attr/progressBarStyleHorizontal"
Code:
<ProgressBar
android:id="@+id/pb_progressbar_standard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
Kann mir jemand sagen, was ich da falsch gemacht habe?
Und zu meinem zweiten Problem:
In der Activity starte ich einen Thread, in dem ich einen int-Wert hochzähle und das an die horizontale ProgressBar weitergebe. Diese zählt somit hoch.
Hier erstmal der Code der Activity:
Code:
package de.dev;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
public class ProgressBarActivity extends Activity{
private ProgressBar pb_horizontalProgressBar;
private int myProgress = 0;
private TextView tvStatus;
private Handler myHandle = new Handler();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_progressbar);
pb_horizontalProgressBar = (ProgressBar)findViewById(R.id.pb_progressbar_horizontal);
tvStatus = (TextView)findViewById(R.id.lb_status);
new Thread(myThread).start();
Button btZurueck = (Button)findViewById(R.id.bt_zurueck);
btZurueck.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
}
});
}
private Runnable myThread = new Runnable(){
@Override
public void run() {
tvStatus.setText("Status: In Progress...");
while (myProgress < 100){
try{
myHandle.sendMessage(myHandle.obtainMessage());
Thread.sleep(50);
System.out.println(myProgress);
myHandle.post(new Runnable() {
public void run() {
myProgress++;
pb_horizontalProgressBar.setProgress(myProgress);
}
});
} catch(Throwable t){
t.printStackTrace();
}
}
}
};
}
Kann mir hier jemand einen Tipp geben?
Danke und viele Grüße