hun*_*175 5 android android-appwidget
我正在开发的启动,我现在用的应用小部件的工作,我跟着从这里教程: AppWigetHost tutrial -莱昂纳多菲舍尔 一切顺利,直到我试图在AppWidgetHostView加入onLongCick监听器
private void createAppWidget(Intent data) {
Bundle extras = data.getExtras();
final int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);
AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId);
AppWidgetHostView hostView = mAppWidgetHost.createView(getApplicationContext(), appWidgetId, appWidgetInfo);
hostView.setAppWidget(appWidgetId, appWidgetInfo);
LinearLayout.LayoutParams params = createLayoutParams(appWidgetInfo);
rootLayout.addView(hostView, params);
hostView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(getApplicationContext(), "Long click " + appWidgetId, Toast.LENGTH_LONG).show();
return true;
}
});
}
Run Code Online (Sandbox Code Playgroud)
当我在主机上添加一个小部件(默认的谷歌模拟时钟) - 并试图长时间点击它,它只是不起作用!长按后,它只会打开时钟应用程序(单击的默认操作).
谁能告诉我如何解决它?这是我的完整代码:http: //pastebin.com/61TkuLvx
添加
我刚刚再次检查:
----如果我长时间点击Clock小部件的边界,则会触发longClick事件!
----我添加了我的自定义appwidget(没有onclick处理程序):所以longclick事件总是被正确触发.
所以我想,它必须与touchevent处理程序/调度程序有关.
添加 我刚刚尝试在主机视图的所有子项上设置onLongClick,如下所示:
private void createAppWidget(Intent data) {
...
...
setChildrenViewLongClick(hostView, new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(getApplicationContext(), "Long click " + appWidgetId, Toast.LENGTH_LONG).show();
return true;
}
});
}
protected void setChildrenViewLongClick(View view, OnLongClickListener listener) {
view.setOnLongClickListener(listener);
String name = view.getClass().getName();
Logger.logInfo("Classname: " + name);
if ( view instanceof ViewGroup ) {
ViewGroup vg = (ViewGroup) view;
for(int i = 0 ; i < vg.getChildCount() ; i++ ) {
setViewLongClick(vg.getChildAt(i), listener);
}
}
}
Run Code Online (Sandbox Code Playgroud)
它只是不工作:(
奇怪的是:我做了另一个实验上的另一项活动,其中有一个的LinearLayout LL(具有onLongClick处理器)包含2个按钮BT1,BT2 - (每个按钮都有的onClick处理程序),并应用该方法setChildrenViewLongClick(LL,onLongClickListener) - 然后长按bt2 - Woop,它工作,调用onLongClickListener里面的动作!
那么问题是什么?AppWidgetHostView或事件/处理程序调度程序?或者我(我的代码)
我很困惑,请帮帮我!
TKS
| 归档时间: |
|
| 查看次数: |
1164 次 |
| 最近记录: |