当前位置: 首页 > 知识库问答 >
问题:

按钮OnClick从活动到特定的选项卡/片段

鲁单弓
2023-03-14
public class TabbedActivity extends AppCompatActivity {

    TabLayout tabLayoutaa;
    ViewPager2 pager2aa;
    FragmentAdapter adapteraa;
    int value;

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

        tabLayoutaa = findViewById(R.id.tab_layoutaa);
        pager2aa = findViewById(R.id.view_pager2aa);

        FragmentManager fm = getSupportFragmentManager();
        adapteraa = new FragmentAdapter(fm, getLifecycle());
        pager2aa.setAdapter(adapteraa);

        tabLayoutaa.setTabMode(tabLayoutaa.MODE_SCROLLABLE);
        tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 1"));
        tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 2"));
        tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 3"));
        tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 4"));
        tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 5"));
        tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 6"));
        tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 7"));

        tabLayoutaa.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                pager2aa.setCurrentItem(tab.getPosition());
            }

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

            }

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

            }
        });

        pager2ah.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageSelected(int position) {
                tabLayoutaa.selectTab(tabLayoutaa.getTabAt(position));
            }
        });
    }
}
public class ButtonList extends AppCompatActivity {


    private Button btntotab1;
    private Button btntotab2;

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

        btntotab1 = (Button)findViewById(R.id.btntotab1);
        btntotab1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                openTab1();
            }
        });
    }

    public void openTab1(){
        Intent intent = new Intent(this, TabbedActivity.class);
        startActivity(intent);
    }
}

共有1个答案

茅昀
2023-03-14

首先,将您的按钮ID传递给包含所有选项卡/片段的活动。

buttonlist.java

   public class ButtonList extends AppCompatActivity {
    private Button btntotab1;
    private Button btntotab2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_buttonlist);
    
        btntotab1 = (Button)findViewById(R.id.btntotab1);
        btntotab1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                openTab(1);
            }
        });
       btntotab2 = (Button)findViewById(R.id.btntotab2);
        btntotab2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                openTab(2);
            }
        });
    }
    
    public void openTab(int buttonId){
        Intent intent = new Intent(this, TabbedActivity.class);
        intent.putExtra("button_id",buttonId);
        startActivity(intent);
    }
   }

现在将该按钮ID传递给fragmentManager或您的视页。

 public class TabbedActivity extends AppCompatActivity {

TabLayout tabLayoutaa;
ViewPager2 pager2aa;
FragmentAdapter adapteraa;
int value, buttonId;

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

    tabLayoutaa = findViewById(R.id.tab_layoutaa);
    pager2aa = findViewById(R.id.view_pager2aa);
     buttonId=getIntent().getIntExtra("button_id",0); // to get the button id

    FragmentManager fm = getSupportFragmentManager();
    adapteraa = new FragmentAdapter(fm, getLifecycle());
    pager2aa.setAdapter(adapteraa);
   
    tabLayoutaa.setTabMode(tabLayoutaa.MODE_SCROLLABLE);
    tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 1"));
    tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 2"));
    tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 3"));
    tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 4"));
    tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 5"));
    tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 6"));
    tabLayoutaa.addTab(tabLayoutaa.newTab().setText("Tab 7"));

     pager2aa.setCurrentItem(buttonId-1);  // to get the current Tab

    tabLayoutaa.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            pager2aa.setCurrentItem(tab.getPosition());
        }

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

        }

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

        }
    });

    pager2ah.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
        @Override
        public void onPageSelected(int position) {
            tabLayoutaa.selectTab(tabLayoutaa.getTabAt(position));
        }
    });
}
}
 类似资料:
  • 我正试图理解onclick事件,但却被弄糊涂了? 我有一个onclick按钮在一个“tab”内容。当我点击这个onclick按钮时,它会打开标记为“tokyo”的正确选项卡,但它不会继续/添加活动类。 第一个选项卡内容中的“我的”按钮是: 我不明白如何告诉它做相同的onclick事件,但添加活动类到“东京”选项卡从这个新的按钮点击? 以下是完整的代码:

  • 我正在尝试在我的android应用中实现一个选项卡导航,但是我想在每个选项卡中运行一个不同的activity。我一直在读android开发页面,他们坚持使用片段导航活动。根据我的理解,你不能有一个片段类本身,它必须包含在一个activity中。 是否可以为每个选项卡创建一个新的activity,并在onTabSelected()函数中运行该activity,同时从正在运行的activity中的片段

  • 问题内容: 我是Java文盲,并且仍在尝试开发供个人使用的应用程序。我从android-studio的“ Tabbed- Activity”开始,除MainActivity中的一个片段和一个捆绑包外,其他大部分都没有改变。 这是我的代码: 主要活动 SectionsPagerAdapter 最后是 SunFragment ,我希望从MainActivity中获得捆绑的数据: 我已经按照此博客进行操

  • 我需要的TabLayout有一个“x”的标签数量,这可以根据用户的数据,已经在数据库中有所不同 My xml: 我的代码:

  • 我在MainActivity中有六个选项卡,第二个选项卡有一个listview,当用户按下listview项时,它会用操作栏打开一个新的活动,因此,当用户按下第二个活动的back按钮时,我想转到主活动的上一个选项卡(第二个选项卡),但它会加载第一个选项卡(Home选项卡)。 我怎样才能解决这个问题?

  • 我一直在寻找一个解决办法,现在,尽管所有类似的问题和答案,但没有找到任何似乎工作。我想让用户能够通过卡片布局中设置的各种面板进行操作。然而,我希望用来在这些卡片之间切换的按钮在卡片本身,而不是一组单独的按钮,它不会在程序中改变。下面是创建框架的主文件: 编辑:我向MainMenu JPanel的按钮添加了一个自动生成的操作监听器,如下所示: 在主文件(主文件为BattleGraphs_V1)中添加