13

fragmentに動的に追加するためにいくつかの を使用していactivityます。戻るボタンを押すと、すべてが正常に機能fragmentしますbackstack。そして、私resumeがそれをするとき、それは現れます。しかし、毎回 on Resume、それはfragmentand 呼び出しを再作成していますonCreateView。私はそれがfragmentライフサイクルの通常の動作であることを知っています。

これは私のonCreateViewです:

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

それらの再作成を止めたいですfragment。で試しましonSavedInstanstateたが、何も機能していません。どうすればそれを達成できますか?

4

3 に答える 3

10

スーパーメソッドを呼び出す前に、Activityで を null にonCreateView設定します。savedInstanceStateまた、savedInstanceState バンドルからキー「android:viewHierarchyState」と「android:fragments」のみを削除することもできます。状態を無効にする単純なソリューションのコードを次に示します。

@Override
public void onCreate(Bundle savedInstanceState)
{
    savedInstanceState = null;
    super.onCreate(savedInstanceState);

    ...
}
于 2014-08-19T10:48:21.510 に答える
10

私は5つのフラグメントを使用しており、以前に同じ問題に直面していたのでうまく機能しています..

public class MyFragmentView1 extends Fragment {

    View v;
    @Override
    public View onCreateView(LayoutInflater inflater,
                             @Nullable ViewGroup container, 
                @Nullable Bundle savedInstanceState) {
        if (v == null) 
            v = inflater.inflate(R.layout.my_fragment_view_layout, 
                container, false
            );
        return v;
    }
}

ビュー変数をクラス内に配置し、ビューインスタンスがnullの場合にのみ新しいものとして膨らませるか、以前に作成したものを使用します

于 2016-07-02T11:16:58.130 に答える