【问题标题】:Where do we get the transcation ID that we replace on the Fragment我们从哪里获得我们在 Fragment 上替换的事务 ID
【发布时间】:2018-07-26 02:50:40
【问题描述】:

我是这个片段理论的新手,我似乎无法理解我们从哪里得到R.id.container 所以我想在单击按钮后开始一个片段。这是我的方法

我的主要方法,我没有添加任何代码来启动我的片段类。

 callCenter.setOnClickListener(view -> openCallCenter());

     //on clicked open call center which should start a fragment
        private void openCallCenter() {



        }

我的片段类:暂时为空;

public class CallCenterFragment extends Fragment {

    public static final String TAG = CallCenterFragment.class.getSimpleName();


    public CallCenterFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_call_center, container, false);
    }

}

我的片段布局暂时为空:

 <?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"
        android:id="@+id/fragment_container"
        tools:context=".fragment.CallCenterFragment">

        <!-- TODO: Update blank fragment layout -->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/hello_blank_fragment" />

    </FrameLayout>

SO:我最大的问题是关于我的 mainActivity 类,我应该添加什么代码来启动这个片段,有人可以向我解释一下,因为我已经看到了几个例子,我们从哪里得到 transaction.replace(R.id.container)

提前致谢。

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    所以我会在这里向您推荐更多详细信息
    容器上Purpose of Container in Fragments for Android

    如果您想按照您的问题在 Main 活动上显示您的片段,请尝试此代码。

    在方法上添加代码。

    CallCenterFragment fragment = new 
     CallCenterFragment();
     FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
    
        trans.replace(R.id.container, fragment);
        trans.commit();
    

    注意。在您的主 xml 中,您需要添加容器 ID,例如。

    <FrameLayout
      android:id="@+id/container"
      Add width and height />
    

    您将显示片段上给出的文本,它是字符串 hello 空白片段。

    【讨论】:

      【解决方案2】:

      在要显示片段的活动 xml 文件中设置 ViewPager。为超类 FragmentPagerAdapter 的超类创建子类 PageAdapter。子类中的完整抽象方法。

      public class PageAdapter extends FragmentPagerAdapter {
      
      public PageAdapter(FragmentManager fm) {
          super(fm);
      }
      
      @Override
      public Fragment getI tem(int position) {
      
          Fragment fragment = null;
          switch (position){
              case 0:{
                  fragment = new ContactFragment();
                  break;
              }
              case 1:{
                  fragment = new RecentFragment();
                  break;
              }
          }
      
          return fragment;
      }
      
      
      @Override
      public int getCount() {
          // 2 is no of fragments
          return 2;
      }
      }
      

      之后

      //--write this code in base activity of fragment
      contactview_f = (ViewPager) findViewById(R.id.fragment_layout);
      pageAdapter = new PageAdapter(getSupportFragmentManager());
      contactview_f.setAdapter(pageAdapter);
      

      【讨论】:

      • 所以我不能在没有适配器的情况下显示它?我只是想尝试用文本显示片段。
      • 我只是想在没有适配器的情况下将它显示在我的主屏幕上。 :) 再次感谢。
      猜你喜欢
      • 2018-11-03
      • 1970-01-01
      • 2013-01-28
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 2020-12-11
      • 1970-01-01
      相关资源
      最近更新 更多