【发布时间】:2012-03-30 16:10:16
【问题描述】:
(在此处编辑 - 下面的原始帖子)
我已将最初的问题缩小为:home 键对于常规活动和 appwidget 配置活动的行为根本不同。 我用以下最小活动进行了测试:
public class TestActivity extends Activity {
Logger logger = Logger.getLogger("logger");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onUserLeaveHint() {
logger.info("userleave");
super.onUserLeaveHint();
}
}
使用这个简单的活动创建一个简单的应用程序按预期工作。创建一个没有任何功能的最简单的小部件,将此活动用作应用小部件配置活动,LogCat 不会获取我们的 logger.info()。
有什么线索吗?
最好的问候
(此处为原帖)
我有一个由按钮启动活动组成的工作小部件。其中之一是配置活动,它适合兼作“应用程序小部件配置活动” - 即当用户将小部件嵌入其主屏幕时调用它。
按照 Android 开发指南,我将此代码添加到设置活动中:
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
RemoteViews views = new RemoteViews(this.getPackageName(), R.layout.widgetlayout);
appWidgetManager.updateAppWidget(appWidgetId, views);
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
setResult(RESULT_OK, resultValue);
finish();
}
}
在 onCreate() 中添加后,活动不会出现 - 非常合乎逻辑,因为它调用了 finish(),其他一切都按预期工作。
我想做的是将它添加到 onPause() 中,因为使用返回或主页按钮退出配置活动是令人愉快的,因为没有“保存和退出”按钮意味着自动保存。 在 onPause() 中添加,小部件不会嵌入到主屏幕。 LogCat 没有显示比信息更严重的东西。
编辑: 缩小到涉及 onPause() 和硬件主页按钮的问题。硬件后退按钮,让小部件嵌入到主屏幕中。
如果有人有提示,我会很高兴,提前谢谢你。
【问题讨论】:
-
+1 是的,HOME 键离开配置活动而不发送结果。即使您使用
setResult()方法。查看相关帖子:Pressing HOME button does not return widget ID from configuration activity
标签: android widget android-activity