首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >小部件LockScreen问题

小部件LockScreen问题
EN

Stack Overflow用户
提问于 2013-08-10 20:27:43
回答 1查看 649关注 0票数 2

我创建了一个键盘保护小部件,它有一个按钮,当单击时,它可以用随机数字向上显示文本视图。它在主屏幕上正常工作,但在锁屏幕上(Android4.2.2),它(s按钮)只在我将它添加到我的锁屏幕小部件时工作,但当我关闭屏幕并返回时,它就不工作了!!

Widget.java

代码语言:javascript
复制
public class Widget extends AppWidgetProvider {

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager), 1, 50000);
    }

    class MyTime extends TimerTask {
        RemoteViews remoteViews;
        AppWidgetManager appWidgetManager;
        ComponentName thisWidget;
        Context context;

    public MyTime(Context context, AppWidgetManager appWidgetManager) {
        this.appWidgetManager = appWidgetManager;
        remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
        thisWidget = new ComponentName(context, Widget.class);
        this.context=context;
    }

    @Override
    public void run() {
        Intent configIntent = new Intent(context, WidgetReceive.class);
        configIntent.setAction("updateTextView");
        PendingIntent configPendingIntent = PendingIntent.getBroadcast(context, 0, configIntent, 0);
        remoteViews.setOnClickPendingIntent(R.id.button1, configPendingIntent);
        remoteViews.setTextViewText(R.id.widget_textview, String.valueOf(new Random().nextInt(100)));
        appWidgetManager.updateAppWidget(thisWidget, remoteViews);
    }

    }


}

WidgetReceive.java

代码语言:javascript
复制
public class WidgetReceive extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
        RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
        ComponentName thisWidget = new ComponentName(context, Widget.class);

        if(intent.getAction().equals("updateTextView")){
        remoteViews.setTextViewText(R.id.widget_textview, String.valueOf(new Random().nextInt(100)));
        appWidgetManager.updateAppWidget(thisWidget, remoteViews);
        }
    }

}

AndroidManifest.xml

代码语言:javascript
复制
 <receiver android:name=".Widget" android:label="@string/app_name">
        <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/> 
        </intent-filter>
        <meta-data android:name="android.appwidget.provider" android:resource="@xml/hello_widget_provider" />
    </receiver>   
    <receiver android:name=".WidgetReceive">
         <intent-filter>
             <action android:name="updateTextView"/> 
        </intent-filter>
    </receiver>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-10 23:46:09

问题可能是下面的行

代码语言:javascript
复制
remoteViews.setOnClickPendingIntent(R.id.button1, configPendingIntent);

WidgetReceive.onReceive(...)中丢失

当使用RemoteViews对象更新应用程序小部件时,每次都必须创建小部件的所有内容,包括监听器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18166058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档