android - 使用 gson 在 onActivityResult 中获取更新的模型?传递结果 ResultInfo 失败
问题描述
我有一个具有编辑选项的水平适配器。选择编辑时,它会打开新活动。编辑后返回水平适配器。我正在尝试使用 onActivityResult 更新适配器中的模型类。但痕迹在说
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=78, result=-1, data=Intent { (has extras) }} to activity {com.codon.masterpiece/com.codon.masterpiece.ui.home.FullScreenSelf}: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
at android.app.ActivityThread.deliverResults(ActivityThread.java:4335)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4379)
at android.app.ActivityThread.-wrap19(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1673)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:6651)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference
at com.codon.masterpiece.ui.home.SelfHorizontalScroll.instantiateItem(SelfHorizontalScroll.java:109)
at androidx.viewpager.widget.ViewPager.addNewItem(ViewPager.java:1010)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1158)
at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:669)
at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:631)
at androidx.viewpager.widget.ViewPager.dataSetChanged(ViewPager.java:1086)
at androidx.viewpager.widget.ViewPager$PagerObserver.onChanged(ViewPager.java:3097)
at androidx.viewpager.widget.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:291)
at com.codon.masterpiece.ui.home.FullScreenSelf.onActivityResult(FullScreenSelf.java:237)
at android.app.Activity.dispatchActivityResult(Activity.java:7355)
这是我的 onActivityResult
if (requestCode == 78 && data != null) {
if (resultCode == RESULT_OK) {
int position = data.getIntExtra("position", 0);
Gson gson = new Gson();
String artworkData = data.getStringExtra("ArtworkData");
TypeToken<ArtworksData> token = new TypeToken<ArtworksData>() {
};
ArtworksData artworksData = gson.fromJson(artworkData, token.getType());
arrayList.set(position, artworksData);
selfHorizontalScroll.notifyDataSetChanged();
//Toast.makeText(this, "Got it", Toast.LENGTH_SHORT).show();
}
}
重定向到编辑活动
if (item.getItemId() == R.id.edit_menu) {
//call edit art activity and pass task id
Intent intent = new Intent(ctx, EditArtwork.class);
//Intent newintent = ctx.getIntent();
// Bundle bundle = newintent.getExtras();
String taskID = feed.getId() + "", imageUrl = "";
imageUrl = feed.getImg1() + "";
intent.putExtra("artwork_id", taskID);
intent.putExtra("image_url", imageUrl);
intent.putExtra("position", ((FullScreenSelf) ctx).viewPager.getCurrentItem());
//intent.putExtra("wishtosell", feed.getWishtosell());
Activity origin_new = (Activity) ctx;
origin_new.startActivityForResult(intent, 78);
}
编辑活动中的方法
if ("False".equals(error)){
kProgressHUD.dismiss();
Toast.makeText(EditArtwork.this, "Artwork updated successfully", Toast.LENGTH_SHORT).show();
Log.d("Upload", jsonObject.toString());
Gson gson = new Gson();
JsonObject data = jsonObject.getAsJsonObject("data");
TypeToken<ArtworksData> token = new TypeToken<ArtworksData>() {
};
ArtworksData artworksData = gson.fromJson(data.toString(), token.getType());
//EditArtwork.this.onBackPressed();
Intent intent = new Intent();
intent.putExtra("ArtworkData", artworksData.toString());
setResult(RESULT_OK, intent);
finish();
}
它在这里崩溃。在适配器中的 instantiateItem 方法中。
final boolean[] hasLiked = {feed.getLiked()};
final boolean[] redirect = {feed.getBrSent()};
解决方案
推荐阅读
- python - 在 Python 中调用函数时如何插入换行符
- wix - WIX 单包安装程序 - 每台机器快捷方式
- hadoop - 具有 HA 的现有名称服务的 Cloudera Nameservice 代理设置
- ansible - 连接字符串以在 jinja2 中创建变量
- c - 系统调用挂钩示例参数不正确
- sql - Regex Postgresql:递归删除字符串的最后一部分
- docker - nvidia-docker 在本地找不到 nvidia-smi:latest
- git - 如何在 github 上删除以前与 master 合并的分支
- vuejs2 - 滚动到 v-expansion-panel 打开
- c++ - 'struct std::iterator_traits 中没有名为 'value_type' 的类型