0

当我将小部件添加到主屏幕时如何屏蔽 onUpdate() 方法?

我有一个监听用户点击的小部件。我在 onUpdate() 中对其进行响应。问题是,即使我将小部件添加到主屏幕,onUpdate() 也会执行。

  @Override
  public void onUpdate(Context context, AppWidgetManager appWidgetManager,
      int[] appWidgetIds) {

          if(flag)
                {
                Toast.makeText(context, "OFF", Toast.LENGTH_SHORT).show();
flag=false;
                }
          else
                {
                Toast.makeText(context, "ON", Toast.LENGTH_SHORT).show();
flag=true;
                }
}

或者如果不在 onUpdate() 方法中,我该如何响应用户点击?

4

1 回答 1

0

问题是,即使我将小部件添加到主屏幕,onUpdate() 也会执行。

这不是一个“问题”。onUpdate()当用户将您的应用小部件添加到主屏幕时需要调用,因此您可以定义应用小部件的外观。

或者如果不在 onUpdate() 方法中,我该如何响应用户点击?

欢迎PendingIntent您在您的应用小部件中使用您想要的任何按钮等。PendingIntent不必路由回您的方法onUpdate()

另外,我注意到您上面的代码片段假定有一个名为flag. 请记住,您的流程不会在应用小部件更新之间始终存在。因此,任何种类的“标志”都需要永久存储在某个地方:数据库、SharedPreferences. 或其他形式的文件。

于 2012-11-13T12:36:51.857 回答