android不兼容的类型,关于android:不兼容的片段类型

嗨,我在android中有一个小应用程序,其中Im使用带有导航抽屉的片段作为菜单。 但是现在我想在用户单击某些内容时在片段对话框弹出窗口中显示,然后出现以下错误:

主要活动:

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");

}

}

我在fragment = new HomeFragment()上遇到的第一个错误; >>不兼容的类型。

onCreateView方法>>方法上HomeFragment的第二个错误未覆盖或实现超类型的方法

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

}

}

HomeFragment不是片段,而是FragmentActivity ...更改将类扩展到Fragment

@ phemt.latd发表您的评论作为答案(也许您可以添加更多上下文)

是的,我也尝试过此选项,但是当扩展Fragment时,无法识别方法getSupportFragmentManager()

解决方法:

HomeFragment必须扩展Fragment

您必须在需要的任何地方使用/导入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()

多数民众赞成在寻求帮助。

HomeFragment不是片段,而是FragmentActivity ...更改将类扩展到Fragment

public class HomeFragment extends FragmentActivity { ... }

es我也尝试过此选项,但是当扩展Fragment时,无法识别方法getSupportFragmentManager()

您可以使用getActivity()。getSupportFragmentManager()android开发人员指南指定FragmentManager:用于与Activity内的Fragment对象进行交互的接口

对不起,但仍然不被认可。看起来像方法newFragmen.show(getActivity()。getSupportFragmentManager()," dialog");有这个问题。我也尝试过getActivity()。getFragmentManager(),但也无法正常工作。这是scr:dropbox.com/s/9y2qtoiy66ubttr/fragmentNotRecognized.PNG

将鼠标移到闪烁的错误上,请在此处输入错误。

有错误:dropbox.com/s/yjswffvcfji0k24/notRecognizedFrag.PNG我发现了这一点您应该使用getActivity()。getSupportFragmentManager()如果仍然给您带来问题,那么请确保您的Activity扩展了FragmentActivity。但是我不能删除FragmentActivity,我扩展了Fragment

包含HomeActivity的活动必须扩展android.support.v4.app.FragmentActivity,HomeFragment必须扩展android.support.v4.app.Fragment和getActivity()返回一个Activity类型的实例,您必须将其强制转换为android.support.v4。 app.FragmentActivity可以对方法getSupportFragmentManager()具有可见性

好吧,我修复了它,我将在下面写文章如何为其他用户修复这些问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值