Multiple instances von einem Widget

  • Antworten:0
beginnerY
  • Forum-Beiträge: 1

17.07.2014, 12:56:50 via Website

Hallo,
Ich versuche jetzt seit Gestern mehrere Instanzen von meinem Widget zu erstellen.
Der Code funktionniert, ich kann mehehre widgets auf Home einfügen und konfiguriren. Das Problem kommt wenn ich auf die Widgets tippe. Immer die geleiche Activity wird zum Vordergrund gebracht obwohl in im Pendingitntent eine extra widgetId spezifiziere.
Ich versuche seit Stunden den Fehler zu beheben, nichts! :(

Laut Log messages, der kommt gar nicht in den widgetProvider rein, wenn ich auf dem widget clicke.
Der einzige Mal wo er in den WidgetProvider reinkommt, ist wenn ich den Widget zum Home einfüge.
Und da zeigt hat der WidgetProvider nur ein Widget in dem Array witgedIds egal wieviele widgets ich habe.
Hier ist mein code:

die configuration activity
public class WidgetConfiguration extends Activity {

int widgetId = AppWidgetManager.INVALID_APPWIDGET_ID;

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    Log.d("configuration", "config");
    setResult(RESULT_CANCELED);
    setContentView(R.layout.widget_config);
    Button saveBtn = (Button) findViewById(R.id.saveBtn);
    saveBtn.setOnClickListener(saveBtnOnClickListener);
    Intent intent = getIntent();
    Bundle extras = intent.getExtras();
    if(extras != null) {
        widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
    }

    if (widgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {
        finish();
    }
}

View.OnClickListener saveBtnOnClickListener = new View.OnClickListener() {
    public void onClick(View V) {
        final Context context = WidgetConfiguration.this;
        AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
        WidgetProvider.updateWidget(widgetId, context, appWidgetManager);
        Intent resultValue = new Intent();
        resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
        setResult(RESULT_OK, resultValue);
        finish();
    }
};

}

Mein Widget provider

public class WidgetProvider extends AppWidgetProvider {
Context context;

public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {
    final int N = appWidgetIds.length;

    // Perform this loop procedure for each App Widget that belongs to this
    // provider
    for (int i = 0; i < N; i++) {
        int appWidgetId = appWidgetIds[i];
        updateWidget(appWidgetId, context,appWidgetManager);
    }
};

 public static void updateWidget(int appWidgetId, Context context, AppWidgetManager appWidgetManager){
     Log.d("widgetProvider", "widgetId"+ appWidgetId);
        // Create an Intent to launch MainActivity
        Intent intent = new Intent(context, MainActivity.class);
        intent.putExtra("widgetId", appWidgetId);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId,
                intent, PendingIntent.FLAG_UPDATE_CURRENT);

        // Get the layout for the App Widget and attach an on-click listener
        // to the button
        RemoteViews views = new RemoteViews(context.getPackageName(),
                R.layout.widget_layout);
        views.setOnClickPendingIntent(R.id.button, pendingIntent);

        // Tell the AppWidgetManager to perform an update on the current app
        // widget
        appWidgetManager.updateAppWidget(appWidgetId, views);
 }

}

Ich wäre sehr dankbar wenn, Jemand mir helfen könnte.
Danke schön

Antworten