1

I wrote the following code fragment regenerate when the screen is rotated.

the fragment setArguments is a "java.lang.IllegalStateException" error occurs.

What better way is there to do?

Reference of:retain the fragment object while rotating

Reference of:refresh fragment at reload

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    String tag = "my_fragment";
    FragmentManager fragmentManager = getFragmentManager();
    Fragment f = fragmentManager.findFragmentByTag(tag)
    if(f == null) { //or if(null == savedInstanceState){
        //create Fragment
        FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
        Fragment homeFragment = new Home();
        fragmentTransaction.add(R.id.mainFragement, homeFragment, tag);
        fragmentTransaction.commit();
    } else {
        //renew Fragment
        Bundle newArgs = //want to renew Args
        f.setArguments(newArgs);

        ft.detach(f);
        ft.attach(f);
        ft.commit();
    }
}

01-24 16:00:54.905: E/VideoPlayerActivity.java # onNewIntent:319(22727): Fragment already active
01-24 16:00:54.905: E/VideoPlayerActivity.java # onNewIntent:319(22727): java.lang.IllegalStateException: Fragment already active
01-24 16:00:54.905: E/VideoPlayerActivity.java # onNewIntent:319(22727):    at android.support.v4.app.Fragment.setArguments(Fragment.java:551)
Community
  • 1
  • 1
rockn
  • 21
  • 3

1 Answers1

0

Excuse me.
I was resolved by myself, Thank you.

} else {
    //renew Fragment
    f.getArguments().putInt(XXXXXXX, x);
    f.getArguments().putSerializable(XXXXXXX, X);

    FragmentTransaction ft = fragmentManager().beginTransaction();
    ft.detach(f);
    ft.attach(f);
    ft.commit();
}
rockn
  • 21
  • 3