android widget setOnClickFillInIntent 不启动 Activity?

标签 android listview widget

你能帮帮我吗我真的很累,在我点击列表中的某行后让我的 ListView 移动到主要 Activity 。所以我创建 ListView 然后在我的小部件中构建自定义 ListView 一切正常但是当我尝试单击 ListView 时移动到 MainActivity 没有任何反应。

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
       // context.startService(new Intent(context, WidgetService.class));
        for (int i = 0; i < appWidgetIds.length; i++) {
            RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
                    R.layout.widget);

            Intent intent = new Intent(context, MainActivity.class);
            intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));

            final PendingIntent contactClickPI = PendingIntent.getBroadcast(context,
                    0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
            remoteViews.setPendingIntentTemplate(R.id.list, contactClickPI);

           /* PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
            remoteViews.setPendingIntentTemplate(R.id.widget,
                    pendingIntent);
            remoteViews.setOnClickFillInIntent(R.id.list, pendingIntent);*/
            //PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

          //  remoteViews.setPendingIntentTemplate(R.id.list,pendingIntent);

           // remoteViews.setOnClickFillInIntent(R.id.list, intent);
            remoteViews.setRemoteAdapter(R.id.list, new Intent(context, WidgetService.class));
            //remoteViews.setEmptyView(R.id.list, R.id.empty_view);
            appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);
        }
    }

我的 RemoteViewsFactory 中的代码:

 @Override
    public RemoteViews getViewAt(int position) {
        final Intent i = new Intent();
        final Bundle extra = new Bundle();
       // extra.putString("number", phoneNumber);

        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        i.putExtras(extra);
        views.setOnClickFillInIntent(R.id.widget, i);
}

这里是我的布局 ListView :

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/widget"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#B311111F">
    <!--android:background="#F5F5DC"-->
    <TextView
        android:id="@+id/empty_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="widget is Empty"
        android:textColor="@android:color/white"
        android:textSize="12dp"

        />

    <TextView
        android:id="@+id/title_football_app"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:contentDescription="Score Football Title"
        android:gravity="center_horizontal"
        android:text="Score Football"
        android:textColor="@android:color/white"
        android:textSize="16dp" />

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingTop="18dp" />
</FrameLayout>

ListView 中的我的项目:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/headerBarLinearLayouts">

    <RelativeLayout
        android:id="@+id/headerBarLinearLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"

        >

        <ImageView
            android:id="@+id/image_view_team"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_alignParentLeft="true"
            android:layout_gravity="left"
            android:padding="3dp"
            />

        <TextView
            android:id="@+id/tv_first_team"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/image_view_team"
            android:paddingLeft="7dp"
            android:textColor="@android:color/white"
            android:textSize="9dp"
            android:textStyle="bold|italic"
            android:layout_centerVertical="true"/>
 </RelativeLayout>
</LinearLayout>

最佳答案

您应该在这里调用 PendingIntent.getActivity() 而不是 PendingIntent.getBroadcast final PendingIntent contactClickPI = PendingIntent.getBroadcast(上下文, 0, Intent ,PendingIntent.FLAG_UPDATE_CURRENT); remoteViews.setPendingIntentTemplate(R.id.list, contactClickPI);

并且您应该使用 ListView ITEM 中的一些 id(您调用 ListView 容器)views.setOnClickFillInIntent(R.id.widget, i); 例如 views.setOnClickFillInIntent(R .id.image_view_team, i); 好代码:)

关于android widget setOnClickFillInIntent 不启动 Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36060617/

相关文章:

android - ResolveInfo.isDefault 始终为 false

android - 广告未针对正确的应用程序包名称展示

android - 自定义 ListView 适配器 [Mono Android] 中的 OutOfMemory 错误

java - 如何在 ListView 的 3 个项目上应用单击或如何在 Android 中将 3 个项目组合为单击

java - 从扩展 ArrayAdapter 的类中获取 ListView 自定义 friend

javascript - 如何避免在数据更改时完全刷新小部件?

移动网络浏览器中的 javascript

android - 通过 gmail 发送电子邮件

css - 透明的官方 Twitter Widget

php - Yii 框架中的自定义 CListView