【发布时间】:2011-11-16 17:42:42
【问题描述】:
我希望能够单击一个小部件并启动一个对话框。我已经阅读了官方文档作为一些非官方文档。我最初想发起一项新活动,但即使这样也失败了。我在 Logcat 中得到以下信息,但我什么都看不到。
11-14 21:28:47.929: INFO/ActivityManager(116): Starting: Intent { flg=0x10000000 cmp=com.android.app/.Execute bnds=[179,89][300,160] } from pid -1
我猜上面的意思是intent已经通过了……但是activity实际上并没有开始。要开始的活动应该是正常活动吗?
使用的代码是:
public class ExampleAppWidgetProvider extends AppWidgetProvider {
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
// Perform this loop procedure for each App Widget that belongs to this provider
for (int i=0; i<N; i++) {
int appWidgetId = appWidgetIds[i];
// Create an Intent to launch ExampleActivity
Intent intent = new Intent(context, ExampleActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
// Get the layout for the App Widget and attach an on-click listener
// to the button
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider_layout);
views.setOnClickPendingIntent(R.id.button, pendingIntent);
// Tell the AppWidgetManager to perform an update on the current app widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
}
有什么想法吗?
【问题讨论】:
-
这个运气好吗?我也在观察。我也看到了这一点 - 当我尝试使用我从我的一个应用程序中发出的通知启动一项活动时。我想这与显示为 -1 的进程 id 有关。通常,每当通过意图启动其他一些活动时,进程 id 不是 -1,而是操作系统分配的一些不同的数字..
-
我的问题已经解决了.. pid 为 -1 与它无关.. 我的实际问题是我的代码中有错字.. 而不是输入为“XYZActivity”,我写了“XYZACtivity”(注意大写的 C),因为它被指定为字符串,所以 Android 没有抛出任何错误。也许你的情况也有类似的情况?
-
那么,-1 是关于什么的?您的意思是您想要开始的活动拼写错误?我没有看到任何拼写错误。在小部件单击上启动的活动如何处理意图?还是这无关紧要?
-
对于第一个问题-不知道..我认为它分配给通知栏的进程..因为它总是为通过通知栏启动的任何内容打印-1。第二 - 是的,我拼错了名字。我使用 setClassName() 方法给出了名称,因为它是字符串,所以没有编译时错误。关于与小部件部分相关的其余问题,我很抱歉,但我对此一无所知.. :( 也许一些知识渊博的人可以帮助你:)