Ich versuche derzeit, ein Fragment programmatisch hinzuzufügen, das eine Ansicht hat, die ich sofort nach der Erstellung des Fragments initialisieren muss. Ich habe versucht, FragmentManager.executePendingTransactions()
direkt nach FragmentTransition.commit()
zu verwenden, aber es funktioniert nicht so, wie es sollte. Ich habe eine Forschung und gefunden this, so dass ich festgestellt, dass FragmentManager.executePendingTransactions()
funktioniert nicht von onCreate()
und dann Code auf onStart()
, aber es funktioniert immer noch nicht funktioniert. Obwohl es in meinem Fall von onItemClickListener()
heißt, glaube ich nicht, dass es einen Unterschied macht. Hier ist mein Code:FragmentManager.executePendingTransactions ruft onCreateView() nicht sofort auf
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.vk_music_list);
musicProgressBar = new MusicProgressBar();
listView = (ListView) findViewById(R.id.listView);
}
@Override
protected void onStart() {
super.onStart();
listView.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String audioUrl = ((VKApiAudio) parent.getAdapter().getItem(position)).url;
serviceIntent.putExtra("audioUrl", audioUrl);
//Inflate music progress bar
fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragment = fragmentManager.findFragmentById(R.id.musicBarContainer);
if(fragment == null) {
fragmentTransaction.add(R.id.musicBarContainer, musicProgressBar)
.setTransition(R.anim.move_from_the_bottom)
.commit();
}
//This guy doesn't work
fragmentManager.executePendingTransactions();
//Never get into this, because fragment is always == null
if(fragment != null) {
SeekBar seekBar = (SeekBar) fragment.getView().findViewById(R.id.progressBar);
seekBar.setMax(((VKApiAudio) parent.getAdapter().getItem(position)).duration);
}
startService(serviceIntent);
}