这是从片段中获取字符串资源的正确方法吗?

Kal*_*iMa 5 string android android-context android-fragments android-resources

在 Fragment 中读取字符串资源时,哪种方法通常更好/更安全?

这里我getResources().getString()直接阅读:

public class SomeFragment extends Fragment {

    public static SomeFragment newInstance() {
        Bundle args = new Bundle();
        SomeFragment fragment = new SomeFragment();
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String someString = getResources().getString(R.string.my_string_id);
    }

}
Run Code Online (Sandbox Code Playgroud)

或者最好这样做,先设置一个 Context 字段,然后从中读取资源:

public class SomeFragment extends Fragment {
    private Context context;

    public static SomeFragment newInstance() {
        Bundle args = new Bundle();
        SomeFragment fragment = new SomeFragment();
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        this.context = context;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String someString = context.getResources().getString(R.string.my_string_id);
    }

}
Run Code Online (Sandbox Code Playgroud)

这些方法中的任何一种都有什么权衡/缺点?

我问的原因是因为有时我会遇到第一种方法的空指针问题,但使用第二种方法可以解决;所以我不确定使用第一个是否有问题。

Com*_*are 4

第二种方法更复杂,并且比第一种方法没有任何价值。使用第一种方法。