mar*_*igo 5 java android android-widget
我正在编写一个Android音板,允许用户创建多个桌面小部件,每个声音一个.我正在使用一个活动让用户选择他想要创建小部件的声音.对于创建的每个小部件,我
key => "WIDGET_FILENAME_"+widgetId, value=> fileName
以"播放声音" 的形式存储共享首选项,我确实覆盖onRecieve了widgetProvider类上的方法.单击桌面窗口小部件时,它会触发此方法的广播,从intent获取窗口小部件ID,然后加载与窗口小部件关联的共享首选项:
int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
问题是:widgetId始终是相同的,没有点击任何小部件,导致播放相同的声音.
对此有何想法或指导?
我遇到了同样的问题并解决了这个问题:
在AppWidgetProviderClass中,按如下方式声明您的Intent:
Intent intent = new Intent(context, YourActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
Run Code Online (Sandbox Code Playgroud)......和PendingIntent
PendingIntent pi = PendingIntent.getActivity(context, appWidgetId, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
Run Code Online (Sandbox Code Playgroud)在Activity类中,在获取要更新的appWidgetId之后:
int currentWidgetId = this.getIntent().getIntExtra(
AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
Run Code Online (Sandbox Code Playgroud)...你可以使用类似这个的功能:
private void updateWidgetView() {
views = new RemoteViews(YourWidget.class.getPackage().getName(),
R.layout.main_widget);
mgr = AppWidgetManager.getInstance(this);
views.setTextViewText(R.id.some_text_view, someText);
// Tell the AppWidgetManager to perform an update on the current App Widget
mgr.updateAppWidget(currentWidgetId, views);
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
895 次 |
| 最近记录: |