アプリはデータをダウンロードしてlistFragmentobjにフィードする必要がありますが、これはActionBarドロップダウンリストの最初のアイテム「Today」に対してのみ実行されます。2番目のアイテムを選択すると、「すぐに」アプリがエラーでクラッシュします。
03-21 14:53:05.272: E/AndroidRuntime(5289): FATAL EXCEPTION: main
03-21 14:53:05.272: E/AndroidRuntime(5289): java.lang.IllegalStateException: commit already called
複数回呼び出すとそのエラーが発生することを理解してcommit()
いますが、コミットデータがないと画面に表示されません。私を助けてください、私はそれを解決する方法がわかりません。どんな助けでもありがたいです。
パブリッククラスMainActivityはActivity{を拡張します
ParkFragment mFragment;
ParkFragment mFragment2;
FragmentTransaction transaction = getFragmentManager().beginTransaction();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String[] actions = new String[] {"Today","Soon"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_dropdown_item, actions);
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
ActionBar.OnNavigationListener navigationListener = new OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
if (actions[itemPosition] == "Today"){
if (mFragment2 != null){transaction.detach(mFragment2);}
if (mFragment == null){
mFragment = new ParkFragment("url1",MainActivity.this);
transaction.add(android.R.id.content, mFragment);
transaction.commit();
}else{
transaction.attach(mFragment);
transaction.commit();
}
}
if (actions[itemPosition]== "Soon"){
if (mFragment != null){transaction.detach(mFragment);
System.out.println("Detached");}
if (mFragment2 == null){
mFragment2 = new ParkFragment("url2",MainActivity.this);
transaction.add(android.R.id.content, mFragment2);
transaction.commit();
}else{
transaction.attach(mFragment2);
transaction.commit();
}
}
return true;
}
};
actionBar.setListNavigationCallbacks(adapter, navigationListener);
}