Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在小部件中每天显示谚语-Android_Java_Android_Widget - Fatal编程技术网

Java 在小部件中每天显示谚语-Android

Java 在小部件中每天显示谚语-Android,java,android,widget,Java,Android,Widget,我制作了一个小部件,它应该每天显示一条随机的谚语。到目前为止,一切正常,除了谚语没有改变,出于测试目的,我将计时器设置为3秒 这是我的密码: JAVA public class ProverbsWidget extends AppWidgetProvider { public static int TIME_OUT = 3000; //1000 = 1 sec public static String fnl_hv = RandomizedProverb(); //this is the me

我制作了一个小部件,它应该每天显示一条随机的谚语。到目前为止,一切正常,除了谚语没有改变,
出于测试目的,我将计时器设置为3秒

这是我的密码:

JAVA

public class ProverbsWidget extends AppWidgetProvider {

public static int TIME_OUT = 3000; //1000 = 1 sec
public static String fnl_hv = RandomizedProverb(); //this is the method that generates the randem proverb and it's working fine

static void updateAppWidget(final Context context, final AppWidgetManager appWidgetManager,
                            final int appWidgetId) {

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                // This method will be executed once the timer is over
                String widgetText = fnl_hv;

                // Construct the RemoteViews object
                RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.proverbs_widget);
                views.setTextViewText(R.id.sayings, widgetText);

                // Instruct the widget manager to update the widget
                appWidgetManager.updateAppWidget(appWidgetId, views);
            }
        },TIME_OUT);
}
RandomizeProverb()

很明显,问题出在我的计时器内,但我似乎无法让它工作

这样做:

Handler handler = new Handler();
Runnable runnable = new Runnable() {
            @Override
            public void run() {
                 // This method will be executed once the timer is over
                String widgetText = fnl_hv;

                // Construct the RemoteViews object
                RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.proverbs_widget);
                views.setTextViewText(R.id.sayings, widgetText);

                // Instruct the widget manager to update the widget
                appWidgetManager.updateAppWidget(appWidgetId, views);
                handler.postDelayed(runnable, timetoswitch);
            }
        },InitialDelayTime;

希望对你有帮助

通过访问XML文件并将
updatePeriodMillis
的值设置为
86400000
来解决此问题,如下所示:

android:updatePeriodMillis="86400000"

基本上,这会告诉小部件何时更新自身,当时间到了时,将执行方法
updateAppWidget()
,因为86400000是24小时内存在的毫秒数,小部件将每天更新

,这是因为您只在类创建时获得随机字符串。永远不要在你的跑步中改变它。所以,它永远保持原来的状态。@ModularSynth你能提出一个解决方案吗?很明显,复制这个
fnl_hv=randomizedSaddlage()
进入
run()
方法。@ModularSynth不幸的是,它不起作用,然后
randomizedSaddle()
出现一些问题。
android:updatePeriodMillis="86400000"