gpt4 book ai didi

Android 使用 setonclickfillinintent 发送 parcelable

转载 作者:行者123 更新时间:2023-11-29 20:47:41 25 4
gpt4 key购买 nike

我有一个带有 ListView 的小部件。每当用户从 ListView 中按下一个项目时,我想接收一个在 Widget ListView 的适配器中编译的 Parcelable 对象。

到目前为止一切正常,除了我无法接收 Parcelable 对象(其他一切正常)

适配器:

@Override
public RemoteViews getViewAt(int position) {
...
Intent fillIntent = new Intent();
fillIntent.putExtra("info", info); //info is a parcelable object
fillIntent.setData(Uri.parse(fillIntent.toUri(Intent.URI_INTENT_SCHEME)));
listViewItem.setOnClickFillInIntent(R.id.widget_listview_item, fillIntent);
...
}

提供者:

@Override
public void onReceive(Context context, Intent intent){
...
else if(intent.getAction().equals(ACTION_CLICK_LISTITEM)){
Info info = intent.getParcelableExtra("info");
// show details
if(info != null){
Intent startIntent = new Intent(context, DetailActivity.class);
startIntent.putExtra("info", info);
startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startIntent.setData(Uri.parse(startIntent.toUri(Intent.URI_INTENT_SCHEME)));
context.startActivity(startIntent);
}else{
Log.i(Constants.LOG_TAG, "info is null.");
}
}
...
}

我总是记录“信息为空。”...

注意:将 Info 类型的对象作为 parcelables 发送到其他 Activity 在我的应用程序中工作得很好。我只在发送 parcelable 对象和 setOnClickFillInIntent 时遇到问题。

感谢任何帮助。

最佳答案

据我所知,此问题是由系统进程解析的 Intent extras 引起的,系统进程没有合适的解析器来解析自定义 Parcelable 对象,请参阅此问题的评论:https://code.google.com/p/android/issues/detail?id=6822详情

作为解决方法,您可以按照评论中的建议将 Parcelable 包装在额外的 Bundle 对象中:

Bundle hackBundle = new Bundle();
hackBundle.put("key", myParcelable);
intent.putExtra("bundleKey", hackBundle);

解决了我的问题

关于Android 使用 setonclickfillinintent 发送 parcelable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30014217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com