找不到ID片段的视图

时间:2020-01-12 13:53:47

标签: android

当我按下InputFragmentNew片段中的按钮时,我希望newRegistrationFragment打开。但是,当我尝试打开它时,出现以下问题。如何从一个片段切换到另一个片段?

头等舱

  public class GirisFragmentNew extends Fragment implements View.OnClickListener{

 btnKAyit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.fragment_container, new yeniKayıtFragment());
                fragmentTransaction.commit();
            }
        });
}

第二个片段

public class yeniKayıtFragment extends  Fragment {
    private yeniKayıtModel yeniKayıtModel;
   public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {
        yeniKayıtModel =
                ViewModelProviders.of(this).get(yeniKayıtModel.class);

        View root = inflater.inflate(R.layout.fragment_yenikayit, container, false);
        Window window=getActivity().getWindow();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            window.setNavigationBarColor(getResources().getColor(R.color.colorPrimary));}
  return root;
    }

二级XML

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="...yeniKayıtFragment">


    <FrameLayout
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:id="@+id/fragment_container"
        />

    <WebView
        android:id="@+id/webviewYeniKayıt"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

</FrameLayout>

2 个答案:

答案 0 :(得分:0)

在您的MainActivity中创建此公共变量 public static FragmentManager manager;

然后在onCreate方法中 manager = getSupportFragmentManager();

然后在您的GirisFragmentNew片段中

btnKAyit.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    yeniKayıtFragment fragment = new yeniKayıtFragment();
                    MainActivity.manager.beginTransaction().replace(R.id.fragment_container,fragment,yenTAG).commit();
                }
            });

答案 1 :(得分:0)

对于Fragment,您必须使用getChildFragmentManager而不是getFragmentManager。不要使用您尝试过的静态变量。检查以下内容:

btnKAyit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction();
        fragmentTransaction.replace(R.id.fragment_container, new yeniKayıtFragment());
        fragmentTransaction.commit();
    }
});