Ajouter par programme fragment de framelayout dans android
Je suis en train de construire une INTERFACE utilisateur en combinant à la fois statique et dynamique des éléments. Pour cela, j'ai divisé mon activité en fragments - toutes les app de navigation est ensuite effectuée par le remplacement des fragments au lieu de naviguer entre les activités.
Dans mon activité principale la mise en page, je suis à l'aide d'un 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" />
J'ai un fragment déclarées comme telles:
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);
}
}
Puis, dans mon activité principale (qui s'étend à FragmentActivity et utilise l'importation android.support.v4.app.FragmentActivity
, je suis une tentative de chargement de ce fragment dans le cadre de mise en page.
MyFragment myf = new MyFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.mainframe, myf);
transaction.commit();
J'ai suivi de beaucoup d'autres exemples, mais je reçois une erreur de compilation sur la transaction.add()
commande, que personne d'autre ne semble avoir rencontré.
L'erreur que je reçois est: The method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, MyFragment)
.
Pourquoi est-ce? Le MyFragment
classe étend Fragment
alors je ai pensé que ce serait le travail. Ce que je fais mal?
Edit: Les importations de mes principales activités sont:
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;
parfois, nous ne erreur lors de l'importation de deux même classe à partir de deux endroit différent tout en faisant le raccourci clavier, je vous suggère de vérifier vos classes importées puisque vous n'êtes pas à l'aide de support de la bibliothèque, comme je le pensais auparavant. Néanmoins, il serait utile pour nous de trouver le problème si vous pouvez mettre vos classes importées ici.
mon activité principale ne s'étendent
FragmentActivity
, pas Activity
.Je suis l'aide de l'importation
android.support.v4.app.FragmentActivity
. C'est la seule option que eclipse m'a incité à l'importation - est-il différent de celui que je devrais utiliser?importation FragmentTransaction de bibliothèque de prise en charge d'android.de soutien.v4.app.FragmentTransaction; aussi, puisque vous êtes l'utilisation d'un support de l'usage de la bibliothèque getSupportFragmentManager() au lieu de getFragmentManager()
OriginalL'auteur Mike Baxter | 2013-12-08
Vous devez vous connecter pour publier un commentaire.
Vérifier vos importations. Utilisation
android.support.v4.app.FragmentTransaction
au lieu deandroid.app.FragmentTransaction
.En outre, assurez-vous d'utiliser
android.support.v4.app.Fragment
et de l'appel degetSupportFragmentManager()
. Il est facile de rater cette appels /importations. Thx pour saiful103a avec la pointe de la FragmentManager.merci pour la réponse...
OriginalL'auteur Steve Benett