Brauche Hilfe bei Widget

  • 3 Antworten
  • Neuester Beitrag
Diskutiere Brauche Hilfe bei Widget im Android App Entwicklung im Bereich Betriebssysteme & Apps.
Y

YannickB

Neues Mitglied
Hallo Android Spezialisten!
Ich bin dabei mein erstes Widget zu Programmieren, weiß aber nicht wie ich eine Textausgabe hinbekomme. Das Widget lässt sich auf den HomeScreen hinzufügen und stürtzt schonmal nicht ab. Es steht halt immer der Start Text "loading data..." drin. Wie bekomme ich jetzt über eine Funktion z.B. einen anderen Text angezeigt?

Das ist meine RSSFeedReader.java
Code:
package de.yannickb.widget.rssfeedreader;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;

public class RSSFeedReader extends AppWidgetProvider {
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        //TextView.Val("Hallo :)")
//nur als Beispiel
    }

}
Hab schon gegooglet nach Tutorials, doch leider sind alle auf English, da komm ich bei den fachlichen Fachbegriffen und so nicht ganz mit.
Ich hoffe mir könnt mir weiterhelfen.
Danke & Gruß
Yannick
 
S

swordi

Lexikon
ohne englisch wirds in der branche generell schwer.
 
Y

YannickB

Neues Mitglied
Ganz ohne English bin ich ja zum Glück nicht. Aber um beim lernen von 0 anzufangen ist es dann doch nicht leicht, da bevorzuge ich schonmal lieber deutsche Anleitungen. Dann kann ich mich mehr auf wesentliche konzentrieren.
 
Y

YannickB

Neues Mitglied
Ich habe mich jetzt mal an diesem Tutorial orientiert (Days to Xmas widget tutorial | Hello Android).
Wenn ich den Code aus dem Tutorial kopiere funktioniert alles, wenn ich aber jetzt ein neues Projekt erstelle und den Code Kopiere, natürlich habe ich namen usw.. angepasst findet leider kein update statt. Es bleibt nur der Start Text (loading data...) stehen.

Hier mal die Dateien, vielleicht fällt ja jemandem was auf:

src/de.yannickb.widget.rssfeedreader/RSSFeedReader.java
Code:
package de.yannickb.widget.rssfeedreader;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.widget.RemoteViews;

public class RSSFeedReader extends AppWidgetProvider {
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
           Timer timer = new Timer();
           timer.scheduleAtFixedRate(new Update(context, appWidgetManager), 1, 1000);
      }
      private class Update extends TimerTask {
             RemoteViews remoteViews;
             AppWidgetManager appWidgetManager;
             ComponentName thisWidget;
             public Update(Context context, AppWidgetManager appWidgetManager) {
             this.appWidgetManager = appWidgetManager;
             remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
             thisWidget = new ComponentName(context, RSSFeedReader.class);
             }
             @Override
             public void run() {
                Date date1 = new Date();
                 //Calendar calendar = new GregorianCalendar(2010, 11,25);
                 long days = date1.getTime();
                     remoteViews.setTextViewText(R.id.tv_rss,""+days);
                     appWidgetManager.updateAppWidget(thisWidget, remoteViews); 
             }
      }
    }
AndroidManifest.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="de.yannickb.widget.rssfeedreader"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">

         <!-- Broadcast Receiver that will process AppWidget updates -->
        <receiver android:name=".RSSFeedReader" android:label="@string/app_name">
               <intent-filter>
                  <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
               </intent-filter>
               <meta-data android:name="android.appwidget.provider" android:resource="@xml/hello_widget_provider" />
        </receiver>
    </application>
    <uses-sdk android:minSdkVersion="4" />
</manifest>
res/layout/main.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background">
<TextView  
    android:id="@+id/tv_rss"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
   android:paddingTop="5dip" android:paddingLeft="20dip"/>
</LinearLayout>
res/values/strings.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">loading data...</string>
    <string name="app_name">_RSS-Feed Reader</string>
</resources>
res/xml/hello_widget_provider.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
   android:minWidth="250dip"
   android:minHeight="50dip"
   android:updatePeriodMillis="10000"
   android:initialLayout="@layout/main"
/>
Schonmal vielen dank für eure Hilfe!
Gruß
Yannick

*EDIT*
Ein Neustart meines HTCs war die Lösung! Muss man auch erstmal drauf kommen :)
 
Zuletzt bearbeitet: