我已经发现了其他类似于我的问题,但找不到解决办法。我有一个带有简单TextView
和配置Activity
的自定义小部件。问题是:
>
将小部件添加到homescreen时,会出现配置活动,但是一旦创建了配置活动,就会立即运行AppWidgetProvider
的onUpdate()
方法。它应该在按确定按钮关闭配置活动后运行。
即使onupdate()
方法在配置活动启动时运行(根据方法中的Toast显示textview的正确数据),textview仍然没有更新。
即使Android:UpdatePeriodMillis设置为1000ms,onUpdate方法也只运行一次--当配置活动开始时。
当我将小部件添加到我的主页中,然后重启phone时,小部件的TextView最终会以适当的时间更新,但只更新一次。
许多用户在最近的android版本(如4.4)上报告了类似的问题。对于这种不良行为有没有最终的解决办法?
这是我的文件清单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="incredible.riskofrain.app">
<application android:allowBackup="true"
android:label="@string/app_name"
android:icon="@drawable/main_icon">
<receiver android:name=".RORAppWidgetProvider" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/ror_appwidget_info" />
</receiver>
<activity android:name=".RORAppWidgetConfigure">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
</intent-filter>
</activity>
<activity android:name="incredible.riskofrain.app.MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
AppWidget_Info:
android:minWidth="200dp"
android:minHeight="80dp"
android:updatePeriodMillis="1000"
android:initialLayout="@layout/ror_appwidget"
android:configure="incredible.riskofrain.app.RORAppWidgetConfigure"
android:resizeMode="horizontal|vertical"
android:widgetCategory="home_screen" >
public class RORAppWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
Calendar c = Calendar.getInstance();
String time = "" + c.get(Calendar.MINUTE)+ ":" + c.get(Calendar.SECOND);
for (int i=0; i<N; i++) {
int appWidgetId = appWidgetIds[i];
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.ror_appwidget);
views.setTextViewText(R.id.textview, time);
appWidgetManager.updateAppWidget(appWidgetId, views);
Toast.makeText(context, "onUpdate " + time + " " + appWidgetId, Toast.LENGTH_LONG).show();
}
}}
AppWidgetConfigure:
public class RORAppWidgetConfigure extends Activity {
int appWidgetId; Button button; AppWidgetManager appWidgetManager;
RemoteViews views;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.ror_configure);
button = (Button) findViewById(R.id.button);
appWidgetManager = AppWidgetManager.getInstance(getApplicationContext());
Bundle extras = getIntent().getExtras();
if (extras != null) {
appWidgetId = extras.getInt(
AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
}
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
views = new RemoteViews(getPackageName(), R.layout.ror_appwidget);
appWidgetManager.updateAppWidget(appWidgetId, views);
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
setResult(RESULT_OK, resultValue);
Toast.makeText(getApplication().getApplicationContext(), "Configure, ID: - " + appWidgetId+"", Toast.LENGTH_LONG).show();
finish();
}
});
super.onCreate(savedInstanceState);
}}
您可以使用broasdcast接收器更新小部件…
查看此链接:
参考链接
<!-- Broadcast Receiver that will process AppWidget updates -->
<receiver android:name=".WordWidget" android:label="@string/widget_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_word" />
</receiver>
我希望它对你有用。
我有一个棘手的问题要解决。在这种情况下,我有一个容器,它扩展了设备尺寸的高度和宽度。在这个小部件中,我还有其他小部件,它们放置在可见区域的范围内。所以现在我得到一个错误,在这种情况下,底部区域溢出。我以为当我改变状态时,我可以将不透明度设置为0并将其翻转为1,但事实并非如此,因为Flutter仍然知道那里有东西。在旧的Android中,您可以将可见性设置为“消失”,使其不占用空间。 这是我的布局代
我试图让我的UI显示两个按钮,其中一个稍微重叠在另一个,在一个全幅卡的中间。因为堆栈的宽度只能与其未定位的子级相同,所以我添加了一个宽度为double.infinity的SizedBox的未定位子级,以便给我一个画布来放置按钮,但我不知道该放什么作为SizedBox的高度。理想情况下,无论用户是在手机上还是在平板电脑上,我都希望这个小部件能够适当地调整自己的大小,所以我宁愿将SizedBox的高度
我的Google Glass今天更新到了KitKat,我认为我已经成功地完成并更新了Eclipse,但是Eclipse在更新引入GDK的新方法上出现了错误。例如,部分更新是 setText()期望java.lang.CharSequence 所以,我把代码从 card.set文本(some_String); 到 card.set文本(some_CharSequence); 然而,当我这样做时,ec
问题内容: class GraphGenerator1 extends JPanel { ChartPanel chartPanel, sbc; 我有一个要更新的条形图,我尝试了revalidate和repaint方法,但没有成功。我什至还添加了chartPanel.addMouseListener(this)。我不知道我在哪里出错或应该在哪里添加一些内容。我有意将mouseListener添加到
下面是我的代码: 输出:输出:显示最小数字0