gpt4 book ai didi

android - 检查 getArguments 是否有一些数据要检索

转载 作者:可可西里 更新时间:2023-11-01 19:09:59 24 4
gpt4 key购买 nike

Android Studio 0.8.7

我有以下函数在 fragment 中设置一些参数:

 public static Fragment newInstance(UUID uuid) {
Log.d(TAG, "newInstance: " + uuid);

Bundle arguments = new Bundle();

arguments.putSerializable(EXTRA_JOB_ID, uuid);
DetailFragment fragment = new DetailFragment();
fragment.setArguments(arguments);

return fragment;
}

在我的 onCreate() 中,我使用 getArguments 检索参数,如下所示:

@Override
public void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "onCreate()");
super.onCreate(savedInstanceState);

/* Get the arguments from the fragment */
UUID uuid = (UUID)getArguments().getSerializable(EXTRA_JOB_ID);
.
.
}

但是,有时会出现我不会发送任何要检索的参数的情况,在这种情况下我的程序会崩溃。

使用 Intents 有 hasExtra 方法来检查:

 if(getActivity().getIntent().hasExtra(Intent.EXTRA_TEXT)) {
/* There is something to be retrieved */
}

我想知道是否有与 getArguments 类似的东西

非常感谢,

最佳答案

作为其他答案的替代建议,您的 newInstance(...) 方法可以设计得稍微好一些。就目前而言,即使您的 UUID 参数为 null,它也会始终添加参数。

尝试将其更改为...

public static Fragment newInstance(UUID uuid) {
Log.d(TAG, "newInstance: " + uuid);

DetailFragment fragment = new DetailFragment();

// Don't include arguments unless uuid != null
if (uuid != null) {
Bundle arguments = new Bundle();
arguments.putSerializable(EXTRA_JOB_ID, uuid);
fragment.setArguments(arguments);
}

return fragment;
}

然后在 FragmentonCreate(...) 方法中先检查参数...

Bundle arguments = getArguments();
if (arguments != null && arguments.containsKey(EXTRA_JOB_ID))
UUID uuid = (UUID)arguments().getSerializable(EXTRA_JOB_ID);

关于android - 检查 getArguments 是否有一些数据要检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25497517/

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