0

Привет, у меня есть небольшое приложение в Android, где я использую фрагменты с навигационным ящиком для меню. Но теперь я хочу показать в моих фрагментов диалоговое всплывающее окно, когда пользователь нажимает на что-то и там я получаю эти ошибки:Несовместимые типы фрагментов

MainActivity:

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(); 
} 

}

+0

HomeFragment - это не фрагмент, но FragmentActivity ... изменение расширяет класс до фрагмента –

+0

@ phemt.latd опубликуйте свой комментарий в качестве ответа (возможно, вы могли бы добавить немного больше контекста) – Blackbelt

+0

yes Я тоже попробовал эту опцию когда расширяется фрагмент, тогда метод getSupportFragmentManager() не распознается –

ответ

5

HomeFragment не является фрагментом, но FragmentActivity ... изменение распространяется класс фрагментировать

public class HomeFragment extends FragmentActivity { ... } 
+0

es Я тоже пытался эту опцию, но когда расширяю фрагмент, тогда метод getSupportFragmentManager() не распознается –

+0

вы можете использовать 'getActivity(). Руководство разработчика для разработчиков getSupportFragmentManager() указывает, что FragmentManager : ** Интерфейс для взаимодействия с объектами фрагмента внутри действия ** –

+0

извините, но все еще не распознается. Его вид выглядит как метод newFragmen.show (getActivity(). GetSupportFragmentManager(), «dialog»); имеет проблему с этим. Я также пытаюсь getActivity(). GetFragmentManager(), но не работает. Вот ссс: https://www.dropbox.com/s/9y2qtoiy66ubttr/fragmentNotRecognized.PNG –

12

Как это исправить:

  1. HomeFragment должен продлить фрагмент
  2. Вы должны использовать/импортировать android.support.v4.app.Fragment, android.support.v4.app.DialogFragment, android.support.v4.app.FragmentActivity везде, где ne EDED.
  3. newFragment.show(getActivity().getSupportFragmentManager(), "dialog"); использование getsupportManager не FragmentManager()
  4. Использование FragmentManager fragmentManager = getSupportFragmentManager(); не FragmentManager()

Это все ТНХ все за помощью.

+1

Пункт 2 был моей проблемой, спасибо. – Michal

+1

Второй вопрос решил мою проблему :) – prg

Смежные вопросы