活动包缺少附加功能,即使它们应始终添加到 newIntance 方法中

Posted

技术标签:

【中文标题】活动包缺少附加功能,即使它们应始终添加到 newIntance 方法中【英文标题】:Activity bundle missing extras even though they should always be added in the newIntance method 【发布时间】:2020-03-27 22:13:47 【问题描述】:

我的应用在生产中发生意外崩溃。我有一个活动,我总是开始使用 newInstance 方法,为意图添加一些额外内容:

public static Intent newInstance(final Context context, @NonNull final Location location) 
        final Intent intent = new Intent(context, LocationActivity.class);

        final Bundle extras = new Bundle();
        extras.putParcelable(BUNDLE_ITEM_LOCATION, Location);
        intent.putExtras(extras);

        return intent;
    

这是我的 onCreate 方法:

@Override
@CallSuper
public void onCreate(@Nullable final Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);

    final Bundle extras = getIntent().getExtras();
    if (extras == null || !extras.containsKey(BUNDLE_ITEM_LOCATION)) 
        throw new IllegalArgumentException(LocationActivity.class.getName()
                + " must be created by using newInstance()");
    

                 [... Some other code ...]

并且这个 IllegalArgumentException 在生产中被抛出。这非常奇怪,因为这种情况不应该发生。知道原因吗?

提前致谢。

【问题讨论】:

Location 是你的 Model 还是 android.location? @ParthivMistri 这是我的模特 @MohamedAshik 新实例方法和 onCreate 在同一个类中,因此请确保这是相同的最终字符串。 是的。你能分享一下你是如何调用这个 newInstance 方法来打开活动的吗? @MohamedAshik 就像 this.startActivity(LocationActivity.newInstance(location)); 【参考方案1】:

试试这个:

public static Intent newInstance(final Context context, @NonNull final Location location 
        final Intent intent = new Intent(context, LocationActivity.class);
        intent.putExtras(BUNDLE_ITEM_LOCATION, Location);
        return intent;
    

【讨论】:

所以它可能来自捆绑包?我会试试这个谢谢! @DenisPinna 如果您仍然面临同样的问题,请告诉我。 @Patrhiv Mistri 显然这个变化仍然存在问题..

以上是关于活动包缺少附加功能,即使它们应始终添加到 newIntance 方法中的主要内容,如果未能解决你的问题,请参考以下文章

如何将它们添加到字典中,并在python中每5个循环后使活动变量成为结尾?

R - 如何识别功能的哪个版本(包)是活动/附加的?

R语言可视化散点图(scatter plot)图为图中的部分数据点添加标签始终显示所有标签,即使它们有太多重叠ggrepel包来帮忙

即使策略规则中缺少该属性,具有附加属性的 XACML 3.0 请求也匹配

是否应始终在页脚元素上添加 role="contentinfo"?

当 Python 只应附加到一个列表时,它会附加到两个列表