2016-05-27 9 views
1

Androidの仕組みを理解することに問題があります。手伝って頂けますか? XMLを介して自分のフラグメントをアクティビティに接続しました。フラグメントのクラスで方向変更後にフラグメントがゴーストになる

<fragment android:name="com.unimusic.mediaPlayerControlBar" 
     android:layout_width="match_parent" 
     android:layout_height="70dp" 
     android:id="@+id/mediaPlayerControlBar" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     /> 

私はmainActivityクラスを取得し、それをこのようなフラグメントのインスタンスを与えている:

//Fragment 
@Override 
    public void onResume(){ 
     super.onResume(); 
     mainActivity = (MainActivity)getActivity(); 
     mainActivity.setFragment(this); 
    } 
//Activity 
public void setFragment(mediaPlayerControlBar f){ 
     frag = f; 
     Log.d("FRAG", "SET"); 
    } 

そして、すべてが正常に動作します。しかし、私は画面を回転すると、新しい "手つかずの"フラグメントが表示されますが、frag.getView()はnullです。 getFragments()listがnullです。 findFragmentById()もnullです。では、どうすればこの新しい断片にアクセスできますか?

もっとコードが必要な場合は、できるだけ早くこの投稿を更新してください。

答えて

1

オリエンテーションが変更されたときにアクティビティとフラグメントが再作成されるため、フラグメントインスタンスの状態を保存する必要があります。あなたはonSaveInstanceState()にフラグメントの状態を保存し、onCreate()

でそれを復元する必要があるアクティビティで onActivityCreated()

  • でそれをonSaveInstanceState()をオーバーライドすることで、インスタンスの状態を保存し、復元する必要がありフラグメントで

  • +0

    本当に便利な答えです。それは私をたくさん助けます –

    関連する問題