現在、フラグメントを作成した直後に初期化する必要のあるビューを持つフラグメントをプログラムで追加しようとしています。 FragmentTransition.commit()
の直後にFragmentManager.executePendingTransactions()
を使用しようとしましたが、想定どおりに動作しません。私は研究を行い、thisを見つけたので、FragmentManager.executePendingTransactions()
はonCreate()
から機能せず、コードをonStart()
に入れても、それでも機能しません。私の場合はonItemClickListener()
から呼ばれていますが、それは何の違いもないと思います。ここに私のコード:FragmentManager.executePendingTransactionsはすぐにonCreateView()を呼び出さない
@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);
}