У меня есть виджет, и я хотел бы добавить более одного из них на мой экран, поэтому я должен контролировать, какой виджет я настраиваю, когда нажимаю на него на главном экране с appWidgetId.
Я следую документации на android.com, но не получаю appWidgetId, когда нажимаю на него на главном экране.
Части моего кода:
// MyWidgetClass
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
Log.i(TAG, CLASS_NAME + " onUpdate");
for (int appWidgetId : appWidgetIds) {
updateAppWidget(context, appWidgetManager, appWidgetId);
}
}
public static void updateAppWidget(Context context,
AppWidgetManager appWidgetManager, int appWidgetId) {
Log.d(TAG, CLASS_NAME + " updateAppWidget --- " + appWidgetId);
if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
Intent settingsIntent = new Intent(context,
Widget1x1SettingsActivity.class);
settingsIntent
.setAction(android.appwidget.AppWidgetManager.ACTION_APPWIDGET_CONFIGURE);
//settingsIntent.putExtra("WIDGET_ID", appWidgetId);
PendingIntent settingsPendingIntent = PendingIntent.getActivity(
context, 0, settingsIntent, 0);
RemoteViews remoteViews = null;
int layout = R.layout.widget_1x1;
remoteViews = new RemoteViews(context.getPackageName(), layout);
// Do something ...
remoteViews.setOnClickPendingIntent(R.id.widget,
settingsPendingIntent);
ComponentName thisWidget = new ComponentName(context,
MyWidgetClass.class);
appWidgetManager.updateAppWidget(thisWidget, remoteViews);
}
}
// Класс настроек
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG, CLASS_NAME + " :: onCreate >>");
super.onCreate(savedInstanceState);
mContext = getApplicationContext();
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
//**//Here appWidgetId is 0 when I click on home screen widget**
}
....
}
И когда я нажимаю кнопку ОК, чтобы завершить настройку:
AppWidgetManager appWidgetManager = AppWidgetManager
.getInstance(getApplicationContext());
MyWidgetClass.updateAppWidget(getApplicationContext(),
appWidgetManager, appWidgetId);
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
appWidgetId);
Log.d(TAG, CLASS_NAME + " Putting in RESULT resultValue extras: " + resultValue.getExtras() + " getInt(): " + resultValue.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID)); // it prints correct
setResult(RESULT_OK, resultValue);
finish();
Я не вставляю xml-файлы, потому что я думаю, что они в порядке.
Заранее спасибо,
SergiBC