Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Programmatically adding fragment to framelayout in android

I am trying to build a UI combining both static and dynamic elements. For this, I have divided my activity into fragments - all app navigation is then done by replacing fragments instead of navigating between activities.

In my main activity layout, I am using a FrameLayout:

<FrameLayout         android:id="@+id/mainframe"         android:layout_height="match_parent"         android:layout_width="match_parent"         android:layout_below="@id/topsection"         android:layout_above="@id/lowersection" /> 

I have a fragment declared as such:

public class MyFragment extends Fragment {     @Override     public View onCreateView(LayoutInflater inflater, ViewGroup container,         Bundle savedInstanceState) {         // Inflate the layout for this fragment         return inflater.inflate(R.layout.fragmentlayout, container, false);     } } 

Then, in my main activity (which extends FragmentActivity and uses the import android.support.v4.app.FragmentActivity, I am attempting to load this fragment into the frame layout.

MyFragment myf = new MyFragment();  FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.add(R.id.mainframe, myf); transaction.commit(); 

I have followed this from many other examples, however I am receiving a compiler error on the transaction.add() command, which nobody else seems to have encountered.

The error I am receiving is: The method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, MyFragment).

Why is this? The MyFragment class extends Fragment so I would've thought this would work. What am I doing wrong?

Edit: The imports for my main activity are:

import org.joda.time.DateTime; import android.app.FragmentTransaction; import android.database.Cursor; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.FragmentActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import android.widget.Toast; 
like image 929
Mike Baxter Avatar asked Dec 08 '13 15:12

Mike Baxter


People also ask

How do I attach a fragment to an activity?

Add a fragment to an activity You can add your fragment to the activity's view hierarchy either by defining the fragment in your activity's layout file or by defining a fragment container in your activity's layout file and then programmatically adding the fragment from within your activity.

Can we add or remove fragments dynamically within an activity?

The FragmentManager class allows you to add, remove and replace fragments in the layout of your activity. It can accessed in an activity via the getFragmentManager() method. The modifications must be performed in a transaction via the FragmentTransaction class.


1 Answers

Check your imports. Use android.support.v4.app.FragmentTransaction instead of android.app.FragmentTransaction.

Furthermore be sure you are using android.support.v4.app.Fragment and calling getSupportFragmentManager(). It's easy to miss this calls / imports. Thx to saiful103a with the hint of the FragmentManager.

like image 112
Steve Benett Avatar answered Sep 22 '22 23:09

Steve Benett