简体   繁体   English

AppWidgetHostView无法处理任何点击事件?

[英]AppWidgetHostView can't handle any click events?

I am creating an android launcher and want to implement appWidgets. 我正在创建一个android启动器,并想要实现appWidgets。 For testing, I am using the com.android.quicksearchbox widget and adding it to the top of the screen. 为了进行测试,我使用com.android.quicksearchbox小部件并将其添加到屏幕顶部。 Problem is, I am using AppWidgetHostView and it seems not to notice any click or touch events the user does. 问题是,我正在使用AppWidgetHostView,似乎没有注意到用户执行的任何单击或触摸事件。 Can anybody tell me why ? 有人可以告诉我为什么吗? Here is all my code for appWidgets (in the onCreate(Bundle) function) : 这是我所有的appWidgets代码(在onCreate(Bundle)函数中):

    android.appwidget.AppWidgetManager appWidgetManager = android.appwidget.AppWidgetManager.getInstance(this);
    android.appwidget.AppWidgetHost appWidgetHost = new android.appwidget.AppWidgetHost(this, 0);
    android.appwidget.AppWidgetProviderInfo newAppWidgetProviderInfo = new android.appwidget.AppWidgetProviderInfo();


    int appWidgetId = appWidgetHost.allocateAppWidgetId();


    List<android.appwidget.AppWidgetProviderInfo> appWidgetInfos = new ArrayList<android.appwidget.AppWidgetProviderInfo>();
    appWidgetInfos = appWidgetManager.getInstalledProviders();

    for(int j = 0; j < appWidgetInfos.size(); j++)
    {
        if (appWidgetInfos.get(j).provider.getPackageName().equals("com.android.quicksearchbox"))
        {

            newAppWidgetProviderInfo = appWidgetInfos.get(j);
            break;
        }
     }



    android.appwidget.AppWidgetHostView hostView = appWidgetHost.createView(this, appWidgetId, newAppWidgetProviderInfo);
    hostView.setAppWidget(appWidgetId, newAppWidgetProviderInfo);


    android.widget.LinearLayout ll = (android.widget.LinearLayout) findViewById(R.id.loll);
    ll.addView(hostView, 0);

loll is my LinearLayout. loll是我的LinearLayout。

So anybody knows how can I enable events ? 因此,有人知道如何启用事件吗? Or if there is another method of adding app-widgets to my launcher ? 或者,如果还有另一种向我的启动器添加应用程序小部件的方法?

Thank you. 谢谢。

I am not sure the code is complete , but you need to add at least the following in your activity . 我不确定代码是否完整,但是您至少需要在活动中添加以下内容。

@Override
 protected void onStart() {

    super.onStart();

    Host.startListening();

}



@Override

protected void onStop() {

    super.onStop();

    Host.stopListening();

}

Does this make sense? 这有意义吗?

You need to bind the widget to make it interactive and allow it to update: 您需要绑定小部件以使其具有交互性并允许其更新:

boolean allowed = mAppWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId, newAppWidgetProviderInfo.provider);

if (!allowed) {
    // Request permission
    Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_BIND);
    intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
    intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_PROVIDER, newAppWidgetProviderInfo.provider);
    final int REQUEST_BIND_WIDGET = 1987;
    myActivity.startActivityForResult(intent, REQUEST_BIND_WIDGET);
}

Additionally, as mentioned in @Sergey's response, you need to add the following in your activity or fragment: 此外,如@Sergey的回复中所述,您需要在活动或片段中添加以下内容:

@Override
 protected void onStart() {
    super.onStart();
    appWidgetHost.startListening();
}

@Override
protected void onStop() {
    super.onStop();
    appWidgetHost.stopListening();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 AppWidgetHostView 不能处理任何触摸/点击事件? - AppWidgetHostView can't handle any touch/click events? AppWidgetHostView无法正确处理onClick / onLongClick - AppWidgetHostView can't handle onClick/onLongClick properly 如何为 AppWidgetHostView 制作长按侦听器 - How can I make a long click listener for an AppWidgetHostView AppWidgetHostView触摸事件无法正常工作 - AppWidgetHostView touch events not working properly 无法同时处理点击和触摸事件 - Can't handle both click and touch events simultaneously 无法处理键盘事件android - can't handle keyboard events android 任何想法如何在Android中创建此布局。 还有更多关于如何处理不规则形状的点击事件的信息? - Any Idea how to create this layout in android. and more over how to handle click events of irregular shapes? 如何使用AppWidgetHostView在android应用程序上调整窗口小部件的大小? - How can I resize a widget on an android application by using AppWidgetHostView? 查看不滚动的项目列表,并按项目位置处理项目单击事件 - View for a list of items that don't scroll, and handle on item click events by the item position 带按钮的Android ExpandableListView项目不处理事件(单击,长按...),并且未提供项目状态可见更改 - Android ExpandableListView item with button doesn't handle events (click, longclick…) and no item state visible changes are provided
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM