Программно добавление фрагмента в framelayout в android
Я пытаюсь создать пользовательский интерфейс, объединяющий как статические, так и динамические элементы. Для этого я разделил свою деятельность на фрагменты - все приложения навигация затем выполняется путем замены фрагментов вместо навигации между действиями.
В моем основном макете деятельности я использую 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" />
У меня есть фрагмент, объявленный как таковой:
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);
}
}
Затем в моем основном действии (которое расширяет FragmentActivity и использует import android.support.v4.app.FragmentActivity
, я пытаюсь загрузить этот фрагмент в макет фрейма.
MyFragment myf = new MyFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.mainframe, myf);
transaction.commit();
Я следил за этим из многих других примеров, однако я получаю ошибку компилятора в команде transaction.add()
, с которой, похоже, никто не сталкивался.
Ошибка, которую я получаю: The method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, MyFragment)
.
Почему это? Класс MyFragment
расширяет Fragment
, поэтому я бы подумал, что это сработает. Что я делаю неправильно?
Изменить: Импорт для моей основной деятельности:
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;
Ответы
Ответ 1
Проверьте свой импорт. Используйте android.support.v4.app.FragmentTransaction
вместо android.app.FragmentTransaction
.
Кроме того, убедитесь, что вы используете android.support.v4.app.Fragment
и вызываете getSupportFragmentManager()
. Легко пропустить эти вызовы/импорт. спасибо to saiful103a с подсказкой FragmentManager.