- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我尝试在 Intent 包中传递一个 Serializable 时,我捕获了这个致命异常,我认为这与我尝试实现的牛轧糖快捷方式有关。这里是异常(exception):
12-16 16:17:32.972 20461-20461/***.****.******.debug E/AndroidRuntime: FATAL EXCEPTION: main
Process: ***.****.******.debug, PID: 20461
java.lang.IllegalArgumentException: Bad value in PersistableBundle key=shortcutId value=***.****.******.common.cta.CtaAccountSectionModel@1fb70dc
at android.os.PersistableBundle.<init>(PersistableBundle.java:124)
at android.os.PersistableBundle.<init>(PersistableBundle.java:98)
at android.content.pm.ShortcutInfo.fixUpIntentExtras(ShortcutInfo.java:267)
at android.content.pm.ShortcutInfo.<init>(ShortcutInfo.java:245)
at android.content.pm.ShortcutInfo.<init>(ShortcutInfo.java)
at android.content.pm.ShortcutInfo$Builder.build(ShortcutInfo.java:1027)
at ****.******.***.ShortcutHelper.createShortcut(ShortcutHelper.java:79)
at ****.******.***.ShortcutHelper.refreshShortcuts(ShortcutHelper.java:87)
at ****.******.***.****.******.***.refreshShortcuts(Application.java:93)
at ****.******.***.refreshShortcuts(SettingActivity.java:247)
at ****.******.***.storeShortcuts(SettingActivity.java:242)
at c****.******.***.access$800(SettingActivity.java:56)
at ****.******.***.SettingActivity$2.onClick(SettingActivity.java:233)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22429)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
CtaAccountSectionModel.class
public class CtaAccountSectionModel extends CtaModel implements Serializable {
}
CtaModel.class
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
defaultImpl = CtaDefaultModel.class,
property = "action", visible = true)
@JsonSubTypes({
@JsonSubTypes.Type(value = CtaProductPageModel.class, name = CtaActionModel.ACTION_PRODUCT_PAGE))})
public class CtaModel implements Serializable {
private String action;
private String name;
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
这里是我创建 Intent 的代码:
public ShortcutBackStackBuilder getHistoryWithBackStack(String section) {
Intent intent = IntentAppFactory.createMainActivityFromShortcut(mContext).putExtra(IntentExtraConstants.EXTRA_SHORTCUT_ID, new CtaAccountSectionModel(section))
.setAction(Intent.ACTION_MAIN);
mIntentLinkedList.add(intent);
return this;
}
有人知道是否不允许在 nougat 快捷方式中传递 Serializable 吗?
最佳答案
PersistableBundle 类使用以下方法检查其内容:
public static boolean isValidType(Object value) {
return (value instanceof Integer) || (value instanceof Long) ||
(value instanceof Double) || (value instanceof String) ||
(value instanceof int[]) || (value instanceof long[]) ||
(value instanceof double[]) || (value instanceof String[]) ||
(value instanceof PersistableBundle) || (value == null) ||
(value instanceof Boolean) || (value instanceof boolean[]);
}
因此,不幸的是,只有这些类可以 bundle 到快捷方式的 Intent 中。
关于android - 牛轧糖版本的快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41245557/
对于NumericVector ,我可以将一个较小的 NumericVector 进行子集化通过使用 IntegerVector包含要子集化的位置。 例如假设x<-c(1,2,2,3,4,5) , i
我的 javascript 文件以配置开始... require.config({ baseUrl: 'scripts', paths: { 'code-mirror'
我的应用程序应该可以使用插件或通常称为糖的方式进行扩展。我会将它们放在 appname.app/Contents/sugars/sugarname.appnamesugar 下 这些是 bundle
我一直在尝试使用 Rcpp 在 C++ 中获取 vector 的等级。我使用了其他糖功能,例如 is_na(); C++中rank R函数有没有类似的糖函数。 Rcpp/ 中是否还有任何可用的 R 糖
我通过 Android Studio 使用 Sugar ORM 进行 Android 开发。 但我想我有一个非常相似的问题。如何将一个/多个结果查询显示为字符串或整数?我的实体看起来像这样: publ
入门读物: Prototypes as "classes" OO JS 按照上述模式,我创建如下库/API var Proto = { constructor: function () {
我在应用程序的第一个版本中使用了 SugarORM。现在,我正在开发第二个版本,它向数据库中添加了新表。 根据 SugarORM documentation “Sugar 会自动为新实体创建表,因此您
我是一名优秀的程序员,十分优秀!