2

我正在尝试获取可能尚未初始化或尚未初始化的几个片段的 id

int i = myFragment.getId();, int j = mySecondFragment.getId();.

我的问题:是否有一种更清洁/更好的方法来获取每个有效片段的 ID,而不是

if (myFragment != null) {int i = myFragment.getId();}?

4

2 回答 2

2

你可以使用谷歌番石榴

当然你也可以实现类似的功能,但是 Guava 给出了一些令人惊叹的例子。

例如,假设一个参数可能为空,我们称它为Optional这个想法是,如果是,你会很快失败,只是不要接受空值。甚至,为它定义一个默认值。

public void method(Integer arg){
    Optional<Integer> possible = Optional.fromNullable(arg);
    Integer myNum = possible.get(); // Throws exception if arg is null
    Integer myNum2 = possible.or(0); // returns 0 if arg is null
}

这个想法是你不要让空值通过你的应用程序的某个级别,理想的情况是它永远不会超过视图(或从数据库返回的持久层)。

如果这个想法一直贯彻到底。在业务层的核心,您不必担心空值。

你可以用番石榴做很多其他的事情,如果你决定听从我的建议,一定要充分利用它:)

于 2013-03-27T18:14:50.257 回答
0

如果这是您经常做的事情,那么您可以创建一个为您进行检查的函数。所以而不是打字

if (myFragment != null) {int i = myFragment.getId();}

一直以来你都可以做类似的事情

public ID getFragmentId(Fragment myFragment){
    if (myFragment != null) {
        return myFragment.getId();
    } else {
        return someDefaultValue;
    }
}

然后打电话

i = getFragmentID(myFragment);

避免大量重复输入,并使您的代码更清晰。

于 2013-03-27T20:46:57.657 回答