Несовместимые типы фрагментов
Привет у меня есть небольшое приложение в android, где я использую фрагменты с навигационным ящиком для меню. Но теперь я хочу показать в моем диалоге фрагментов всплывающее окно, когда пользователь нажимает на что-то, и там я получаю эти ошибки:
Основная активность:
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment = new FindPeopleFragment();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
Первая ошибка, которую я получаю на фрагмент = новый HomeFragment(); >>несовместимые типы .
Вторая ошибка на HomeFragment в метод onCreateView >> метод не переопределяет или реализовать метод с супертип
HomeFragment:
public class HomeFragment extends FragmentActivity {
public HomeFragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
final RelativeLayout rlPolievkaShowDialog=(RelativeLayout)rootView.findViewById(R.id.rlPolievkaButton);
rlPolievkaShowDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
return rootView;
}
private void showDialog() {
DialogFragment newFragment = DialogFragmentAlergeny.newInstance();
newFragment.show(getSupportFragmentManager(), "dialog");
}
}
DialogFragmentAlergeny:
public class DialogFragmentAlergeny extends DialogFragment {
public static DialogFragmentAlergeny newInstance() {
DialogFragmentAlergeny frag = new DialogFragmentAlergeny();
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
View view = getActivity().getLayoutInflater().inflate(R.layout.alergeny_dialog, null);
alertDialogBuilder.setView(view);
alertDialogBuilder.setTitle(getString(R.string.alergeny_dialog_title));
alertDialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
return alertDialogBuilder.create();
}
}
2 ответа:
HomeFragment не фрагмент, а FragmentActivity...изменение расширяет класс до фрагмента
public class HomeFragment extends FragmentActivity { ... }
Как это исправить:
- HomeFragment должен расширить фрагмент
- вы должны использовать / импортировать
android.support.v4.app.Fragment
,android.support.v4.app.DialogFragment
,android.support.v4.app.FragmentActivity
везде, где нужно.newFragment.show(getActivity().getSupportFragmentManager(), "dialog");
ИспользоватьgetsupportManager
НеFragmentManager()
- использовать
FragmentManager fragmentManager = getSupportFragmentManager();
НеFragmentManager()
Вот и все thx все за помощью.