I want to implement an action with a fragment! when I press Fragment1, Fragment2 is called, and when I press Fragment2, Fragment2 should be removed from the screen! I implement it by calling setOnclickListener LinearLayout from Fragment2 in my onCreateView, and on my onclicklistener I called
transaction.remove(myFragment);
transaction.commit();
but after that I encountered this error: commit already called how can I fix this error, here is my code: This is my fragment class
public class ArticleFragment extends Fragment { final static String ARG_POSITION = "position"; int mCurrentPosition = -1; private static LinearLayout l; private android.support.v4.app.FragmentTransaction transaction; private Fragment newFragment; public void setArticleFragment(android.support.v4.app.FragmentTransaction transaction , Fragment newFragment) { this.transaction = transaction; this.newFragment = newFragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (savedInstanceState != null) { mCurrentPosition = savedInstanceState.getInt(ARG_POSITION); } View v = inflater.inflate(R.layout.article_view, container , false); l = (LinearLayout) v.findViewById(R.id.transparentArea); if(l == null) l.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) {
and my mainAcitivity class
public class MainActivity extends FragmentActivity implements HeadlinesFragment.OnHeadlineSelectedListener{ HeadlinesFragment firstFragment; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.news_articles); if (findViewById(R.id.fragment_container) != null) { if (savedInstanceState != null) { return; } firstFragment = new HeadlinesFragment(); firstFragment.setArguments(getIntent().getExtras()); getSupportFragmentManager().beginTransaction() .add(R.id.fragment_container, firstFragment).commit(); } } public void onArticleSelected(int position) { ArticleFragment articleFrag = (ArticleFragment) getSupportFragmentManager() .findFragmentById(R.id.article_fragment); if (articleFrag != null) { articleFrag.updateArticleView(position); } else { final ArticleFragment newFragment = new ArticleFragment(); Bundle args = new Bundle(); args.putInt(ArticleFragment.ARG_POSITION, position); newFragment.setArguments(args); final FragmentTransaction transaction = getSupportFragmentManager() .beginTransaction(); newFragment.setArticleFragment(transaction, newFragment); transaction.setCustomAnimations(R.anim.slidein, R.anim.slideout); transaction.add(R.id.fragment_container, newFragment); transaction.commit(); } }
source share