我正在构建一个包含多页信息的小部件。一次只显示一个页面,当用户点击窗口小部件时,将显示下一页。我想通过使用ViewFlipper创建此功能,但是我找不到任何关于如何为小部件实现它的文档。
这是我在尝试让ViewFlipper工作时使用的框架代码。
我有一个widget(DivisionStandings),它使用服务(UpdateService)将内容插入到布局(mainLayout)中。
运行小部件时,我最初看到header1的文本按预期设置为“Updated Header”。然而,触摸小部件什么都不做。
[BroadcastReceiver (Label = "aaWdiget")]
[IntentFilter (new string [] { "android.appwidget.action.APPWIDGET_UPDATE" })]
[MetaData ("android.appwidget.provider", Resource = "@xml/divisionstandings")]
public class DivisionStandings : AppWidgetProvider
{
public override void OnUpdate (Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
context.StartService (new Intent (context, typeof (UpdateService)));
}
}
[Service]
public class UpdateService : Service
{
public override void OnStart (Intent intent, int startId)
{
RemoteViews mainView= new RemoteViews (this.PackageName, Resource.Layout.mainLayout);;
ComponentName thisWidget = new ComponentName (this, "mlbstandings.DivisionStandings");
AppWidgetManager manager = AppWidgetManager.GetInstance (this);
mainView.SetTextViewText(Resource.Id.header1, "Updated Header");
ViewFlipper flipper = (ViewFlipper)Resource.Id.viewFlipper1;
flipper.Touch += (object sender, View.TouchEventArgs e) => {
flipper.ShowNext();
};
manager.UpdateAppWidget (thisWidget, mainView);
}
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout" >
<ViewFlipper
android:id="@+id/viewFlipper1">
<TextView
android:id="@+id/header1"
android:text="---Header" />
<TextView
android:id="@+id/header2"
android:text="Other Header" />
</ViewFlipper>
</LinearLayout>
答案 0 :(得分:2)
问题可能出在ViewFlipper flipper = (ViewFlipper)Resource.Id.viewFlipper1;
&#39; Resource.Id.viewFlipper1&#39;是int
而不是ViewFlipper
所以你需要通过id来查看:
ViewFlipper flipper = mainView.FindViewById<ViewFlipper> (Resource.Id.viewFlipper1)
击> <击> 撞击>
<强>更新强>
因为看起来没有方法可以直接访问视图,所以您需要使用mainView.SetOnClickPendingIntent
而不是OnRecive()
方法中的操作。
Here is Java中的更多信息