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

     2023-04-15     204

关键词:

【中文标题】从 Activity 到特定选项卡/片段的按钮 OnClick【英文标题】:Button OnClick from an Activity to a specific Tab/Fragment 【发布时间】:2021-12-14 08:21:09 【问题描述】:

这就是问题所在。我在一个活动中有 7 个按钮,在不同的活动中有 7 个选项卡/片段。 7 个标签/片段是可滑动的。我想让按钮能够打开它们各自的选项卡。例如,单击按钮 1 将重定向到选项卡/片段 1,单击按钮 2 将打开选项卡/片段 2,等等。那么,如何使按钮按预期工作?任何答案或想法将不胜感激。提前谢谢你。

这是我的代码: TabbedActivity.java

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));
            
        );
    

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) 
                openTab1();
            
        );
    

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


【问题讨论】:

【参考方案1】:

在 Android IDE 的右侧面板中搜索每个按钮的 onclick 属性。 将您的标签更改功能放在那里。在 Main Activity 中,在按钮函数中使用 switch 语句比较 id。

在xml中每个按钮的onclick属性中使用相同的功能

就像在 MainActivity 你有函数:openTab() 一样。

public void OpenTab(View view)

    switch view.getId()
    
        case r.id.xx:
        // Your working
        break;
    

【讨论】:

你能根据我的代码展示一个例子吗?我似乎明白了这个想法,但我并没有真正了解如何编写代码。【参考方案2】:

首先,将您的 buttonId 传递给包含所有选项卡/片段的 Activity。

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);
    
   

现在将该 buttonId 传递给 fragmentManager 或您的 viewPager。

TabbedActivity.java

 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));
        
    );


如果它不起作用,您也可以使用 switch case 来获取选定的选项卡并将其传递给片段管理器。 可能有一些语法错误,所以要小心。

【讨论】:

你能根据我的例子给我看一个开关盒的例子吗?我似乎明白了,但我不知道如何编写代码。 您是否在不使用开关盒的情况下尝试了我的代码? 我尝试使用您在上面给出的答案,但它对我不起作用

在按钮点击时转换到选项卡栏控制器的特定选项卡

】在按钮点击时转换到选项卡栏控制器的特定选项卡【英文标题】:Transitiontoaspecifictabofatabbarcontrolleronbuttontap【发布时间】:2013-08-0115:11:41【问题描述】:我正在尝试实现此功能:在我的登录屏幕上(使用用户名、密码和“登录... 查看详情

当我单击 Eclipse 中的按钮时,使用 tabHost 并转到特定选项卡

】当我单击Eclipse中的按钮时,使用tabHost并转到特定选项卡【英文标题】:UsingtabHostandgotoaspecifictabwhenIclickonbuttonineclipse【发布时间】:2018-06-1123:16:39【问题描述】:当我单击Eclipse中其他活动中的按钮时,我想转到特定选项卡(... 查看详情

如何在选项卡 Activity 的片段中使用 onCreateOptionsMenu? (夏洛克动作条)

】如何在选项卡Activity的片段中使用onCreateOptionsMenu?(夏洛克动作条)【英文标题】:HowcanIuseonCreateOptionsMenuinaFragmentwithinatabActivity?(SherlockActionBar)【发布时间】:2012-08-0500:51:11【问题描述】:我在我的选项卡Activity中覆盖了以下... 查看详情

Acivity1 Fragment2 -> Activity2(单击按钮后)-> Activity1 Fragment2 从活动导航到特定片段

】Acivity1Fragment2->Activity2(单击按钮后)->Activity1Fragment2从活动导航到特定片段【英文标题】:Acivity1Fragment2->Activity2(afterbuttonclick)->Activity1Fragment2navigatefromactivitytospecificfragment【发布时间】:2020-10-0617:12:53【问题描述】 查看详情

数据从父片段传递到选项卡片段(子) - Android

】数据从父片段传递到选项卡片段(子)-Android【英文标题】:DataPassingfromParentFragmenttoTabbedFragment(child)-Android【发布时间】:2018-06-2407:29:49【问题描述】:我想将数据从父片段传递到选项卡式片段(子)以进行初始数据传递(当... 查看详情

如何从名为 Next 的“bottomNavigationBar”按钮滑动到下一个选项卡?

】如何从名为Next的“bottomNavigationBar”按钮滑动到下一个选项卡?【英文标题】:Howtoswipetonexttabfrom`bottomNavigationBar`buttonnamedNext?【发布时间】:2020-02-2313:48:32【问题描述】:以下是我尝试从底部导航栏按钮导航到下一个选项卡的... 查看详情

从按钮 onclick 上的片段导航到 Activity

】从按钮onclick上的片段导航到Activity【英文标题】:NavigatetoActivityfromfragmentonbuttononclick【发布时间】:2017-08-2009:57:29【问题描述】:我想从我的片段导航到一个新活动。@OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,Bund... 查看详情

在android中按下后退按钮后如何返回相同的选项卡?

...02:11:21【问题描述】:我的android应用程序中有两个活动:ActivityA:它有一个带有3个标签的标签导航视图。当用户将屏幕从选项卡1滑动到选项卡2时,选项卡2视图会显示一个转到Activity的按钮。2。我想要做的 查看详情

如何从 JavaScript 函数导航到 <p:tabView> 的特定选项卡

】如何从JavaScript函数导航到<p:tabView>的特定选项卡【英文标题】:Howtonavigatetoparticulartabof<p:tabView>fromJavaScriptfunction【发布时间】:2016-10-2408:31:28【问题描述】:我的XHTML页面中有一个选项卡,如下所示<p:tabViewwidgetVar="t... 查看详情

在特定条件下将数据从一个选项卡自动填充到另一个选项卡

】在特定条件下将数据从一个选项卡自动填充到另一个选项卡【英文标题】:Autofilldatafromonetabtoanotherundercertaincriteria【发布时间】:2012-01-0512:36:59【问题描述】:我在Excel2010电子表格中输入客户详细信息,即客户姓名、日期、订... 查看详情

Bootstrap 3 - 将页面刷新到特定选项卡

】Bootstrap3-将页面刷新到特定选项卡【英文标题】:Bootstrap3-Refreshingpagetospecifictab【发布时间】:2016-01-2802:21:56【问题描述】:我有一个带有5个选项卡的页面-单击任何选项卡上的“保存”按钮后,它应该执行诸如验证和将数据发... 查看详情

如何从 UIButton 到选项卡栏项?

】如何从UIButton到选项卡栏项?【英文标题】:HowtoseguefromUIButtontoaTabBarItem?【发布时间】:2012-07-3017:35:59【问题描述】:我有一个带有标签栏的应用,其中包含5个标签。我决定使用“主屏幕”而不是直接在第一个选项卡中打开应... 查看详情

PyQT - 在特定选项卡中引用小部件

】PyQT-在特定选项卡中引用小部件【英文标题】:PyQT-referencingawidgetwithinaspecifictab【发布时间】:2014-08-1722:05:01【问题描述】:例如,我想要一个选项卡中的按钮来清除该选项卡中的textEdit框,(我知道我可以直接执行此操作,但... 查看详情

如何链接到页面并使用 Rails 激活特定选项卡

】如何链接到页面并使用Rails激活特定选项卡【英文标题】:Howtolinktoapageandhaveaspecifictabactivewithrails【发布时间】:2017-12-2815:12:15【问题描述】:如果一个信息页面有多个基于不同主题的选项卡,并且存在从不同页面指向信息页... 查看详情

如何在模式中打开特定选项卡

】如何在模式中打开特定选项卡【英文标题】:Howtoopenaparticulartabinsideamodal【发布时间】:2018-04-2901:44:57【问题描述】:我有2个按钮,每个按钮负责打开一个模式,但是,这个模式有2个用于注册和登录的选项卡。我希望如果用... 查看详情

javascriptwoo的自定义cta,可打开并滚动到特定的产品页面选项卡(代码片段)

查看详情

切换选项卡的按钮跳过第一个选项卡

】切换选项卡的按钮跳过第一个选项卡【英文标题】:Buttonfortoggletabsskipsfirsttab【发布时间】:2018-07-0309:10:19【问题描述】:我有由2种按钮控制的选项卡:常规BootStrap选项卡按钮-(ulli)-左侧的紫色圆形按钮-我们称它们为“侧边栏... 查看详情

将 UIView 从一个选项卡移动到另一个选项卡

】将UIView从一个选项卡移动到另一个选项卡【英文标题】:MovingUIViewfromOneTabtoanother【发布时间】:2015-07-2207:09:15【问题描述】:我正在制作这种类型的屏幕。我已经使用了3个UIButton并以编程方式给了它们边框。小红线是UIView。... 查看详情