具有切换功能的小部件

时间:2015-07-30 19:05:42

标签: java android android-widget pseudocode

我正在尝试创建一个包含一个ImageView的小部件。 我希望它像切换按钮一样工作。只需点击一下,它应该做一件事,然后在另一次点击时做另外的事情,并重复。

我偶然发现了很多关于widget的教程和很多关于stackoverflow的帖子,但到目前为止还没有成功。我想做类似的事情:首次点击,启动一个过程,更改ImageView并等待另一次点击停止。我见过像这样的小部件

到目前为止我的代码:

private Boolean clicked = false;

...

// Construct the RemoteViews object
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);

        Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_camera);
        views.setImageViewBitmap(R.id.imageView, bitmap);

        Intent intent1 = new Intent(context, MainActivity.class);
        Intent intent2 = new Intent(context, MainActivity2.class);

        PendingIntent firstPIntent = PendingIntent.getActivity(context, 0, intent1, 0);
        PendingIntent secondPIntent = PendingIntent.getActivity(context, 0, intent2, 0);

        if(!clicked)
        {
            views.setOnClickPendingIntent(R.id.imageView, firstPIntent);
            clicked = true;
            Log.e("WIdGEt", "ONE");
        }
        else if(clicked)
        {
            views.setOnClickPendingIntent(R.id.imageView, secondPIntent);
            clicked = false;
            Log.e("WIdGEt", "TWO");
        }

请帮我一些代码(或伪代码)。谢谢!

1 个答案:

答案 0 :(得分:4)

  

它只运行firstPIntent。

这是因为clicked总是false,因为clicked(显然)是AppWidgetProvider中的一个字段,而AppWidgetProvider个实例仅适用于一次更新。

您需要调整逻辑以跟踪文件,数据库或SharedPreferences中的“已点击”状态 - 这些内容不仅会在AppWidgetProvider实例消失后继续存在,而且还会在您的流程终止后到处。