android - 如何在小部件中循环文本?

标签 android loops text timer android-widget

我是 android 的新手,我正在尝试创建一个新闻小部件,显示标题和摘要 30 秒。然后更改为另一个标题和摘要。我希望小部件连续循环执行此操作。到目前为止,我只能显示第一个标题和 fragment 。如何在不每 30 秒调用 alarmManager 的情况下更改文本?非常感谢任何帮助。

我的代码

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



    RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.widget1);


    String tickerheadline="testing";
    String tickerstory="testing";
    for (int i = 0; i < RssReader.rssheadline.size(); i++) {
        tickerheadline = RssReader.rssheadline.get(RssReader.rssheadline.size()-(i+1));
        tickerstory = RssReader.rssstory.get(RssReader.rssheadline.size()-(i+1));
        Handler handler = new Handler(); 
        handler.postDelayed(new Runnable() { 
             public void run() {} 
            }, 30000);

    }

    updateViews.setTextViewText(R.id.headline, tickerheadline );
    updateViews.setTextViewText(R.id.story, tickerstory );

    appWidgetManager.updateAppWidget(appWidgetId, updateViews);
} 

编辑

public static void updateAppWidget(final Context context, final AppWidgetManager appWidgetManager, final int appWidgetId) {
    final RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.widget1);

new Thread(new Runnable() {
        public void run() {     
    tickerheadline="testing";
    tickerstory="testing";
    for (int i = 0; i < RssReader.rssheadline.size(); i++) {
        tickerheadline = RssReader.rssheadline.get(RssReader.rssheadline.size()-(i+1));
        tickerstory = RssReader.rssstory.get(RssReader.rssheadline.size()-(i+1));
        context.runOnUiThread(action); //action cannot be resolved as variable
        SystemClock.sleep(30000);

    }
        }
    }).start();

    Runnable action = new Runnable() {
        public void run() {
    updateViews.setTextViewText(R.id.headline, tickerheadline );
    updateViews.setTextViewText(R.id.story, tickerstory );


    appWidgetManager.updateAppWidget(appWidgetId, updateViews);
        }
    };

} }

最佳答案

无论您在方法中传递什么参数,您都可以创建类的构造函数并将其传递,并将“MainActivity.this”替换为“context”。不过,如果您有任何疑问,请告诉我...:)

public void updateAppWidget(){
    new YourNewClass().start();
}
private class YourNewClass extends Thread {
    @Override
    public void run() {
        for(--,--,--){
            MainActivity.this.runOnUiThread(runnable);
            SystemClock.sleep(30000);
        }
    }
}
private Runnable  runnable = new Runnable() {
    public void run() {

    }
};

关于android - 如何在小部件中循环文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13771093/

相关文章:

java - 如果数据每次返回循环时都会被替换,如何将循环中的数据从最小到最大排序?

C程序求一个区间内不断增长的数字

javascript - 在 HTML5 中,我可以制作一个不规则形状的文本框吗?

c++ - 通过发音查找相似词 - 算法、方法、库

android - 无意刷新 Android 标签页

java - 无法使用 AVD 在 Windows 7 上绑定(bind)端口 1131

python - 计算并求和所有先前的同类项

c++ - 如何在 RichEdit 控件中查找粗体文本?

android - 如何找到在android中打开当前 Activity 的最后一个 Activity ?

java - 将图像从 Android 客户端发送到 Windows 上使用 NetBeans 制作的本地服务器