2016-01-24 2 views
1

Я написал следующий фрагмент кода, который восстанавливается при повороте экрана.обновить фрагмент при перезагрузке или после поворота

фрагмент setArguments - это ошибка «java.lang.IllegalStateException».

Какой лучший способ сделать?

Отнесение: retain the fragment object while rotating

Отнесение: 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) 

ответ

0

Простите.
Я был решен один, спасибо.

} 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(); 
} 
Смежные вопросы