Widget zu App hinzufügen

  • Antworten:0
Gelöschter Account
  • Forum-Beiträge: 408

23.12.2010, 02:49:08 via Website

Hallo zusammen,

ich habe da ein kleines Problemchen, und zwar habe ich ne kleine App geschrieben um mich mit Widgets vertraut zu machen.
Diese App zeigt beim Starten in einem EditText einen Text an.

Nun habe ich versucht ein Widget hinzuzufügen, was beim antippen die Activity startet (also genauso, als würde man die App direkt starten). Auf dieser Methode will ich später eine andere App aufbauen, die beim antippen das Widget-Icon ändert.

Leider wird das Programm beim erstellen des Widgets auf dem Homescreen gezwungenermaßen beendet (Die Anwendung... wurde unerwartet beendet).

Hier mal die nötigen Sourcecodes:

WidgetHello.java

1package com.test.widgethello;
2
3import android.app.Activity;
4import android.app.PendingIntent;
5import android.appwidget.AppWidgetManager;
6import android.appwidget.AppWidgetProvider;
7import android.content.Context;
8import android.content.Intent;
9import android.os.Bundle;
10import android.widget.EditText;
11import android.widget.RemoteViews;
12
13public class WidgetHello extends Activity {
14 /** Called when the activity is first created. */
15 @Override
16 public void onCreate(Bundle savedInstanceState) {
17 super.onCreate(savedInstanceState);
18 setContentView(R.layout.main);
19
20 EditText et_hello = (EditText) findViewById(R.id.et_hello);
21 et_hello.setText("Hallo Du da!");
22 }
23
24class WidgetUpdate extends AppWidgetProvider {
25 @Override
26 public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
27 final int N = appWidgetIds.length;
28 for (int i = 0; i < N; i++) {
29 int appWidgetId = appWidgetIds[\i]; <-- Kommentar-Forum: Escape vor i, weil sonst BB-Code für Kursiv eingeleitet und damit code-Tag nicht ohne Fehler! Escape im Quelltext nicht vorhanden!!!
30 Intent intent = new Intent(context, WidgetHello.class);
31 PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
32 RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidgetlayout);
33 views.setOnClickPendingIntent(R.id.Button01, pendingIntent);
34 appWidgetManager.updateAppWidget(appWidgetId, views);
35 }
36 }
37}
38}

AndroidManifest.xml

1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="com.test.widgethello"
4 android:versionCode="1"
5 android:versionName="1.0">
6 <application android:icon="@drawable/icon" android:label="@string/app_name">
7 <activity android:name=".WidgetHello"
8 android:label="@string/app_name">
9 <intent-filter>
10 <action android:name="android.intent.action.MAIN" />
11 <category android:name="android.intent.category.LAUNCHER" />
12 </intent-filter>
13 </activity>
14
15 <receiver android:name="WidgetUpdate" >
16 <intent-filter>
17 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
18 </intent-filter>
19 <meta-data android:name="android.appwidget.provider"
20 android:resource="@xml/appwidget" />
21 </receiver>
22
23 </application>
24 <uses-sdk android:minSdkVersion="8" />
25
26</manifest>

xml/appwidget.xml

1<?xml version="1.0" encoding="utf-8"?>
2<appwidget-provider
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:minWidth="294dp"
5 android:minHeight="72dp"
6 android:updatePeriodMillis="60000"
7 android:initialLayout="@layout/appwidgetlayout" >
8</appwidget-provider>

xml/appwidgetlayout.xml

1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent">
6<Button android:text="Start" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
7</LinearLayout>

Wäre schön, wenn mir jemand weiterhelfen könnte :)

Gruß Oli - Diese Nachricht wurde mit einer Taschenlampe in das offenliegende Ende eines Glasfaserkabels gemorst! - Follow me on Twitter - AndroitPIT-Regeln

Antworten