首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不相容的片段类型

不相容的片段类型
EN

Stack Overflow用户
提问于 2014-01-31 08:39:09
回答 2查看 20.2K关注 0票数 3

嗨,我在android中有一个小应用程序,我使用带有导航抽屉的片段作为菜单。但是现在我想在我的片段对话框弹出窗口中显示当用户点击某个东西,在那里我得到以下错误:

MainActivity:

代码语言:javascript
复制
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();>>incompatible类型

HomeFragment at onCreateView method >>方法上的第二个错误没有覆盖或实现来自超级类型的方法

HomeFragment:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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();
}

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-31 08:46:01

HomeFragment不是片段,而是将类扩展到片段的FragmentActivity...change。

代码语言:javascript
复制
public class HomeFragment extends FragmentActivity { ... }
票数 6
EN

Stack Overflow用户

发布于 2014-01-31 09:48:03

如何修正它:

  1. HomeFragment必须扩展片段
  2. 您必须在任何需要的地方使用/导入android.support.v4.app.Fragmentandroid.support.v4.app.DialogFragmentandroid.support.v4.app.FragmentActivity
  3. newFragment.show(getActivity().getSupportFragmentManager(), "dialog");使用getsupportManager而不是FragmentManager()
  4. 使用FragmentManager fragmentManager = getSupportFragmentManager();而不是FragmentManager()

这一切都是为了寻求帮助。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21475581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档