2017-09-03 52 views
1

我有显示简单的文本和3个按钮的窗口小部件:处理多个按钮的小窗口内 - 的Android

  • 刷新(精选另一个随机字符串并把它显示)
  • 复制(复制的内容的TextView到剪贴板)
  • 分享(分享的TextView到

我已经得到了刷新按钮的设置和工作得很好的社交媒体和等)的内容,但我似乎无法想出一个办法处理另两个按钮

PS。我不需要实际的代码我已经知道该怎么做复制和分享我只需要知道

这里点击如何处理事件,是迄今为止我的代码:

Button copy_content; 
Button share_content; 

void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) { 
    /** Code below will be executed once the timer is over*/ 
    String widgetText = RandQuotes[rand.nextInt(RandQuotes.length)]; 

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



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

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    // There may be multiple widgets active, so update all of them 
    for (int appWidgetId : appWidgetIds) { 
     updateAppWidget(context, appWidgetManager, appWidgetId); 
    } 
    final int count = appWidgetIds.length; 

    for (int i = 0; i < count; i++) { 
     int widgetId = appWidgetIds[i]; 
     String on_sayings = RandQuotes[rand.nextInt(RandQuotes.length)]; 

     RemoteViews remoteViews = new RemoteViews(context.getPackageName(), 
       R.layout.quotes_widget); 
     remoteViews.setTextViewText(R.id.sayings, on_sayings); 

     Intent intent = new Intent(context, HavamalWidget.class); 
     intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); 
     intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 
       0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
     remoteViews.setOnClickPendingIntent(R.id.switch_trigger, pendingIntent); 
     appWidgetManager.updateAppWidget(widgetId, remoteViews); 
    } 

} 

回答

0

刚用动作在按钮上做出待定意图。所以在onReceive()只是检查意图的行为,并就此做出一些逻辑。如果你做了一些长期的任务,最好在IntentService中做所有的逻辑。在你的按钮

设置挂起的意图是在RemoteViews这样的:

public static final String ACTION_BUTTON_SHARE = "ACTION_BUTTON_SHARE"; 
public static final String ACTION_BUTTON_REFRESH = "ACTION_BUTTON_REFRESH"; 

Intent refreshIntent = new Intent(context, ExampleAppWidget.class) 
      .setAction(ACTION_BUTTON_REFRESH); 
PendingIntent refreshPI = PendingIntent.getBroadcast(context, 0, refreshIntent, 
      PendingIntent.FLAG_UPDATE_CURRENT); 
remoteViews.setOnClickPendingIntent(R.id.refresh_button, refreshPI); 

Intent shareIntent = new Intent(context, ExampleAppWidget.class) 
      .setAction(ACTION_BUTTON_SHARE); 
PendingIntent sharePI = PendingIntent.getBroadcast(context, 0, shareIntent, 
      PendingIntent.FLAG_UPDATE_CURRENT); 
remoteViews.setOnClickPendingIntent(R.id.share_button, refreshPI); 

在ExampleAppWidget.class(从的AppWidgetProvider延伸)覆盖的onReceive()方法

@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent != null) { 
     if (intent.getAction().equals(ACTION_BUTTON_REFRESH)) { 
      //make some logic here on button refresh 
     } else if (intent.getAction().equals(ACTION_BUTTON_SHARE)) { 
      //make some logic here on button share 
     } else { 
      super.onReceive(context, intent); 
     } 
    } 
} 
+0

而下面我迷路了你的指示,你可以发布完整的答案吗? –

+0

只是再次检查答案 –

+0

我遇到了一些'CommonRemoteViewBuilder'的麻烦,并且操作按钮'ACTION_BUTTON_COPY'和'ACTION_BUTTON_REFRESH'被称为“无法解析符号” –