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

是我也试过这个选项,但是当扩展Fragment时,方法getSupportFragmentManager()不被识别 –

回答

5

HomeFragment不是一个片段,但一个FragmentActivity ...变化扩展类到碎片

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

es我也试过这个选项,但是当扩展Fragment时,方法getSupportFragmentManager()不被识别 –

+0

你可以使用'getActivity().getSupportFragmentManager()'android developer guide指定FragmentManager :**与活动中的片段对象交互的界面** –

+0

抱歉,但仍无法识别。它看起来像方法newFragmen.show(getActivity()。getSupportFragmentManager(),“dialog”);有这个问题。我也尝试getActivity()。getFragmentManager()但不能工作。这里是scr: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");使用getsupportManagerFragmentManager()
  4. 使用FragmentManager fragmentManager = getSupportFragmentManager();FragmentManager()

这就是所有THX所有的帮助。

+1

第2点是我的问题,谢谢。 – Michal

+1

第二点解决了我的问题:) – prg