【问题标题】:How to display a fragment without clicking on it如何在不单击的情况下显示片段
【发布时间】:2021-11-17 19:50:04
【问题描述】:

我有一个带有两个选项卡的表格布局,在我编写的代码中,当我单击它们时会显示这些选项卡。现在它的工作原理是这样的:我打开活动,并且在单击 TabLayout 标题的标题之前,不会显示来自 TabLayout 的片段。我怎样才能使它在我打开 Activity - Fragment 时已经可见?



public class DetailActivity extends AppCompatActivity {

    FrameLayout simpleFrameLayout;
    TabLayout tabLayout;
    ImageView onBackPressed;

    Button subsButton;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);


        if (getSupportActionBar() != null) {
            getSupportActionBar().hide();
        }


        subsButton = findViewById(R.id.subsButton);

        subsButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                if (subsButton.getText().equals("Подписаться")) {

                    subsButton.setText("Отписаться");
                    subsButton.setBackgroundColor(subsButton.getContext().getResources().getColor(R.color.colorGrey));


                } else if (subsButton.getText().equals("Отписаться")) {
                    subsButton.setText("Подписаться");
                    subsButton.setBackgroundColor(subsButton.getContext().getResources().getColor(R.color.colorPrimary));

                }

            }
        });


        simpleFrameLayout = (FrameLayout) findViewById(R.id.simpleFrameLayout);
        tabLayout = (TabLayout) findViewById(R.id.simpleTabLayout);

        onBackPressed = (ImageView) findViewById(R.id.onBackPressed);

        tabLayout.selectTab(tabLayout.getTabAt(0));

        TabLayout.Tab firstTab = tabLayout.newTab();
        firstTab.setText("Chelsea");
        tabLayout.addTab(firstTab);


        TabLayout.Tab secondTab = tabLayout.newTab();
        secondTab.setText("Manchester City");
        tabLayout.addTab(secondTab);


        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {


            @Override
            public void onTabSelected(TabLayout.Tab tab) {

                Fragment fragment = null;
                switch (tab.getPosition()) {
                    case 0:
                        fragment = new FragmentHisOne();
                        break;
                    case 1:
                        fragment = new FragmentHisTwo();
                        break;
                    default:
                        fragment = new FragmentHisOne();
                        break;
                }
                FragmentManager fm = getSupportFragmentManager();
                FragmentTransaction ft = fm.beginTransaction();
                ft.replace(R.id.simpleFrameLayout, fragment);
                ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                ft.commit();

            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {


            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });
    }


    public void onBackPressed(View view) {
        Intent intent = new Intent(view.getContext(), MainActivity.class);
        view.getContext().startActivity(intent);
    }



【问题讨论】:

    标签: java android kotlin android-fragments android-tablayout


    【解决方案1】:

    您在选择选项卡之前甚至没有添加它。 tabLayout.selectTab(tabLayout.getTabAt(0));添加标签后移动此代码。

    【讨论】:

      【解决方案2】:

      事实上,在创建 TabLayout 选项卡之前,我并没有提前创建默认片段。我的解决方案:

      FrameLayout simpleFrameLayout;
          TabLayout tabLayout;
          ImageView onBackPressed;
      
          Button subsButton;
      
          Fragment fragment = null;
          FragmentManager fragmentManager;
          FragmentTransaction fragmentTransaction;
      
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_detail);
      
      
              if (getSupportActionBar() != null) {
                  getSupportActionBar().hide();
              }
      
      
              subsButton = findViewById(R.id.subsButton);
      
              subsButton.setOnClickListener(new View.OnClickListener() {
      
                  @Override
                  public void onClick(View view) {
                      if (subsButton.getText().equals("Подписаться")) {
      
                          subsButton.setText("Отписаться");
                          subsButton.setBackgroundColor(subsButton.getContext().getResources().getColor(R.color.colorGrey));
      
      
                      } else if (subsButton.getText().equals("Отписаться")) {
                          subsButton.setText("Подписаться");
                          subsButton.setBackgroundColor(subsButton.getContext().getResources().getColor(R.color.colorPrimary));
      
                      }
      
                  }
              });
      
      
              simpleFrameLayout = (FrameLayout) findViewById(R.id.simpleFrameLayout);
              tabLayout = (TabLayout) findViewById(R.id.simpleTabLayout);
      
              onBackPressed = (ImageView) findViewById(R.id.onBackPressed);
      
              tabLayout.selectTab(tabLayout.getTabAt(0));
      
              TabLayout.Tab firstTab = tabLayout.newTab();
              firstTab.setText("Chelsea");
              tabLayout.addTab(firstTab);
      
      
              TabLayout.Tab secondTab = tabLayout.newTab();
              secondTab.setText("Manchester City");
              tabLayout.addTab(secondTab);
      
              fragment = new FragmentHisOne();
              fragmentManager = getSupportFragmentManager();
              fragmentTransaction = fragmentManager.beginTransaction();
              fragmentTransaction.replace(R.id.simpleFrameLayout, fragment);
              fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
              fragmentTransaction.commit();
      
              tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
      
      
                  @Override
                  public void onTabSelected(TabLayout.Tab tab) {
      
                      Fragment fragment = null;
                      switch (tab.getPosition()) {
                          case 0:
                              fragment = new FragmentHisOne();
                              break;
                          case 1:
                              fragment = new FragmentHisTwo();
                              break;
                          default:
                              fragment = new FragmentHisOne();
                              break;
                      }
                      FragmentManager fm = getSupportFragmentManager();
                      FragmentTransaction ft = fm.beginTransaction();
                      ft.replace(R.id.simpleFrameLayout, fragment);
                      ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                      ft.commit();
      
                  }
      
                  @Override
                  public void onTabUnselected(TabLayout.Tab tab) {
      
      
                  }
      
                  @Override
                  public void onTabReselected(TabLayout.Tab tab) {
      
                  }
              });
          }
      
      
          public void onBackPressed(View view) {
              Intent intent = new Intent(view.getContext(), MainActivity.class);
              view.getContext().startActivity(intent);
          }
      
          public void subsButton(View view) {
              //Button.setBackground
          }
      

      【讨论】:

        猜你喜欢
        • 2021-12-04
        • 2010-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-22
        相关资源
        最近更新 更多