0

こんにちは、2 つのフラグメント間で (フラグメント A から framgnet B に) 情報を渡す必要がありますが、それができません...開発者の Web サイトで提供されているチュートリアルに従いましたが、どういうわけかエラーが発生しています... null ポイントを取得していましたフラグメントB内のテキストビューの例外...テキストビューの範囲に問題がないことを確認しました。すべての人が私を助けることができたのは、おそらくフラグメントaからbに情報を渡し、それを表示するように要求していたからです。 b b のビューがまだ作成されていないとき..他のフラグメントのビューが作成されているかどうかを確認する方法を知りたいですか? しかし、私の主な問題はまだフラグメント間でデータを渡す方法が残っていますか??? これに関連する2つの質問をしました フラグメント間でデータを渡すことができません.....TextViewはNullPoint例外 をスローし、 フラグメント間でデータを渡す方法は?

私は開発者のウェブサイトで与えられた例に従いました

4

1 に答える 1

1

ビューをキャッシュしないでください。getView() メソッドを使用してルート ビューを取得します。まだ作成されていない場合は、作成されます。

行を変更します。

TextView text=(TextView)view.findViewById(R.id.tt);

に:

TextView text=(TextView)getView().findViewById(R.id.tt);

とにかく、外部オブジェクトから直接表示するように値を設定するのは良い方法ではありません。次のようなことができます。

private String mText = null;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    // onActivityCreated calls after view creation, and attaching fragment to Activity so it's good place to fill your views with default info
    TextView text=(TextView)getView().findViewById(R.id.tt);
    text.setText(mText);
}

void setSongList(ArrayList<SongDetails> songinfo) {
    View v = getView();

    // Cache your text, and set it to TextView  only if View already created.
    this.mText = "mytext";
    if(v != null) {
        TextView text=(TextView)getView().findViewById(R.id.tt);
        text.setText(mText);
    }
}
于 2013-09-20T11:57:00.253 に答える