1

こんにちは、文字列から Fragment 内の View の ID を取得しようとしていますが、うまくいかないようです... Fragment の特殊なケースはありますか?

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View singleplayerView = inflater.inflate(R.layout.singleplayer_tab, container, false);
        setupMap();
        return singleplayerView;
    }

    private void setupRank() {
        TextView view = (TextView) getByStringId("rank0");
        view.setText("hello");
    }



    private final View getByStringId(final String id) {
        return findViewById(getResources().getIdentifier(id, "id", getActivi

ty().getPackageName()));
        }

したがって、フラグメントに使用されるレイアウトで textView フィールド rank0 を設定しようとしています...しかし、ID が見つからないため、現在は NUllPointer を取得します

ありがとうございました

4

3 に答える 3

1

次のように Fragments 内の onCreateView() でレイアウトを定義できます。

View V = new View(getActivity());
V = inflater.inflate(R.layout.fragment_layout,container, false);

それで

TextView SomeField = (TextView)V.findViewById(R.id.TxtSomeField);
于 2013-05-25T10:31:46.163 に答える
1

フラグメント内で、findViewById の前に getActivity を追加します。

getActivity().findViewById(...);
于 2013-05-25T10:33:06.537 に答える