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;
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.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With