Witam! Napisałem aplikację na Androida, która pobierze z serwera dane dotyczące pogody i wyświetli je w textView, a następnie utworzy powiadomienie, które pokazuje informacje o pogodzie. Pobiera on tekst z textView. Gdy uruchomię program pokazuje on w powiadomieniu domyślny tekst zamiast pogody. W textView pokazuje się dobrze pogoda. Myślałem nad tym, żeby program zaczekał do zakończenia thread'a i wtedy pobrał tekst z textView i go wyświetlił, lecz nie mogę do tego dojść.
protected void onCreate(Bundle savedInstanceState) {
MyWeather pogodaResult;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Pogoda = (TextView) findViewById(R.id.textView);
Thread myThread = new Thread(new Runnable() {
public void run() {
String PogodaString = QueryYahooPogoda();
Document PogodaDoc = convertStringToDocument(PogodaString);
final MyWeather pogodaResult = parseWeather(PogodaDoc);
runOnUiThread(new Runnable() {
@Override
public void run() {
Pogoda.setText(pogodaResult.toString());
String finalPogoda = pogodaResult.toString();
}
});
}
});
myThread.start();
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.sun)
.setContentTitle("Pogoda")
.setContentText(Pogoda.getText() + "°C");
Intent resultIntent = new Intent(this, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build());