android:使用tab检测单个片段viewpager(代码片段)

author author     2022-12-28     676

关键词:

我有一个与ViewPagerFragmentPagerAdapter安装TabLayout的问题

TabLayout工作正常。但是,所有选项卡中的代码同时运行。我希望当前选定的选项卡中的代码能够运行

这是我的活动

package francesco.prisco.siamostudenti.ui;

import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
import francesco.prisco.siamostudenti.R;
import francesco.prisco.siamostudenti.ui.fragments.CalendarFragment;
import francesco.prisco.siamostudenti.ui.fragments.ChatFragment;
import francesco.prisco.siamostudenti.ui.fragments.EmailFragment;
import francesco.prisco.siamostudenti.ui.fragments.HomeFragment;
import francesco.prisco.siamostudenti.ui.fragments.ProfiloFragment;


public class HomeTabActivity extends AppCompatActivity 

//  private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;

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

       //     toolbar = (Toolbar) findViewById(R.id.toolbar);
       //    setSupportActionBar(toolbar);
       //    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        viewPager = (ViewPager) findViewById(R.id.viewpager);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);
        setupTabIcons();
    
    private void setupTabIcons() 
        int[] tabIcons = 
            R.drawable.ic_home,
            R.drawable.ic_calendar,
            R.drawable.ic_chat,
            R.drawable.ic_email,
            R.drawable.ic_profile
        ;

        tabLayout.getTabAt(0).setIcon(tabIcons[0]);
        tabLayout.getTabAt(1).setIcon(tabIcons[1]);
        tabLayout.getTabAt(2).setIcon(tabIcons[2]);
        tabLayout.getTabAt(3).setIcon(tabIcons[3]);
        tabLayout.getTabAt(4).setIcon(tabIcons[4]);
    

    private void setupViewPager(ViewPager viewPager) 
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFrag(new HomeFragment(), "HOME");
        adapter.addFrag(new CalendarFragment(), "CALENDAR");
        adapter.addFrag(new ChatFragment(), "CHAT");
        adapter.addFrag(new EmailFragment(), "EMAIL");
        adapter.addFrag(new ProfiloFragment(), "PROFILO");
        viewPager.setAdapter(adapter);
    
    class ViewPagerAdapter extends FragmentPagerAdapter 
        private final List<Fragment> mFragmentList = new ArrayList<();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) 
            super(manager);
        

        @Override
        public Fragment getItem(int position) 
            return mFragmentList.get(position);
        

        @Override
        public int getCount() 
            return mFragmentList.size();
        

        public void addFrag(Fragment fragment, String title) 
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        

        @Override
        public CharSequence getPageTitle(int position) 

            // return null to display only the icon
            return null;
         
     
 

这是一个片段的代码

package francesco.prisco.siamostudenti.ui.fragments;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import francesco.prisco.siamostudenti.R;
import francesco.prisco.siamostudenti.ui.HomeTabActivity;

public class ProfiloFragment extends Fragment 
    public ProfiloFragment() 
    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
    

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) 
        View rootView = inflater.inflate(R.layout.fragment_profilo, container, false);
        return rootView;
    

    

请帮帮我

答案

就像@Mrugesh Thaker所说的那样,每当FragmentonCreateView()膨胀时,所有View生命周期函数 - Fragment等都会被执行。

在这里,每当View成为当前Fragment页面的相邻Fragment时,每个FragmentFragment都会膨胀。

因此,当它成为当前选择的OnPageChangeListener页面到HomeTabActivity时,你应该移动'每个片段需要执行的代码'

在你的ViewPager,当你设置OnPageChangeListener,添加一个ViewPager到yourprivate void setupViewPager(ViewPager viewPager) . . viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() public void onPageScrollStateChanged (int state) public void onPageSelected (int position) /* * Define the action to be performed for each page. * Variable 'position' is the index of the page in the ViewPager */ public void onPageScrolled (int position, float positionOffset, int positionOffsetPixels) );

Learning Resource

qazxswpoi

另一答案

实际上,查看寻呼机就是这样的。查看寻呼机的主要目的是使用户能够顺利滑动,所以它的作用是,它会创建您一次给出的所有片段,以获得平滑的滑动流程。这实际上是它的局限性,因为片段生命周期的所有方法都是一次调用的。

在 Android 中使用具有多个布局的单个片段

】在Android中使用具有多个布局的单个片段【英文标题】:UsingasinglefragmentwithmultiplelayoutinAndroid【发布时间】:2014-11-0211:21:15【问题描述】:我想使用具有多个布局的单个片段(仅可以加载多个布局的单个片段类)。我有两个布局... 查看详情

c#后台绑定treeview单个tab(代码片段)

<wijmo:C1TreeView ID="C1TreeView1" runat="server" ShowCheckBoxes="true" ShowExpandCollapse="true" Width="300px"></wijmo:C1TreeView><asp:Button ID="ButtonTo 查看详情

如何在 android 检测测试类中运行单个测试方法以及如何为此更改编辑配置

】如何在android检测测试类中运行单个测试方法以及如何为此更改编辑配置【英文标题】:Howtorunsingletestmethodinandroidinstrumentedtestclassandhowtochangeeditconfigurationforthis【发布时间】:2020-01-0610:45:44【问题描述】:我在单个android检测测... 查看详情

Mobile Vision API (TEXT) 未检测到单个数字?

...enumbers?【发布时间】:2017-10-2108:43:27【问题描述】:我在Android上使用MobileVisionAPI(https://developers.google.com/vision/)来检测图像中的文本。但是,它似乎永远无法检测到“3”或“6”等单个数字,但 查看详情

如何在android的单个片段中隐藏回收器视图的视图(但在两个片段中使用相同的列表)

】如何在android的单个片段中隐藏回收器视图的视图(但在两个片段中使用相同的列表)【英文标题】:Howtohideaviewofrecyclerviewinasinglefragmentinandroid(Butusingsamelistintwofragments)【发布时间】:2021-04-1905:00:39【问题描述】:我在两个片段... 查看详情

检测蓝牙键盘上的 Tab 键按下

...-0818:38:51【问题描述】:如果蓝牙键盘连接到iPad,我可以使用enter键:-(BOOL)textFieldShouldReturn:(UITextField*)textField但是如果我还需要检测tab键,我应该使用什么?仅供参考,在ios模拟器中使用硬件键盘本质上是一样的 查看详情

如何在使用 Android 移动视觉库时处理单个相机帧

】如何在使用Android移动视觉库时处理单个相机帧【英文标题】:HowtoprocessindividualcameraframeswhileusingAndroidmobilevisionlibrary【发布时间】:2017-07-0216:25:03【问题描述】:我正在尝试制作一个相机应用程序,它使用带有自定义相机实例... 查看详情

如何检测单个控制键盘事件而不是键组合?(代码片段)

用它来检测control关键事件很容易document.addEventListener('keyup',handler,false);...functionhandler(e)varkey=e.which||e.keyCode;if(key==17)//Controlkey...问题是任何键组合,如control-c和control-v也会触发事件,似乎事件处理程序无法区分单个contr 查看详情

android使用gesturedetector进行手势检测(代码片段)

1.引言在操作应用的时候,会有很多不同的手势操作,如按下、单击、双击、长按等手势,我们可以在这些手势事件中添加相应的业务逻辑,那么如何检测不同的手势操作就比较重要了,本文将带大家了解如何... 查看详情

如何使用qtcreator创建一个不依赖于android的单个本机共享库(代码片段)

我使用QtCreator创建了一个共享库,并添加了AndroidSDK,AndroidNDK和AndroidQt工具包。然后我成功编译了我的Android库。我甚至成功地在Android应用程序中测试了它。由于我没有使用Qt库,我的库不依赖于庞大的Qt库。但出乎意料的是,这... 查看详情

如何使用 PIL 在单个白色背景上检测和裁剪多个图像?

】如何使用PIL在单个白色背景上检测和裁剪多个图像?【英文标题】:HowdoyoudetectandcropmultipleimagesonasinglewhitebackgroundusingPIL?【发布时间】:2018-07-0522:21:57【问题描述】:我刚开始使用PIL,我需要帮助来使用PIL检测和裁剪单个白色... 查看详情

Android MVVM:具有多个片段的活动 - 将共享 LiveData 放在哪里?

】AndroidMVVM:具有多个片段的活动-将共享LiveData放在哪里?【英文标题】:AndroidMVVM:ActivitywithmultipleFragments-WheretoputsharedLiveData?【发布时间】:2018-05-0715:46:15【问题描述】:我有一个关于androidViewModels的架构问题:假设在我的应用... 查看详情

使用单个几乎相同的参考图像进行物体检测

我想了解在图片或增强现实设置中使用单个几乎相同的参考图像执行对象检测的解决方案。更具体一点:我想检测平面(即二维)和大多数矩形物体。我有一个数据库,其中包含要检测的对象的“完美”参考图像(高质量,全正... 查看详情

匹配单个字符(代码片段)

在上一小节中,了解到通过re模块能够完成使用正则表达式来匹配字符串本小节,将要讲解正则表达式的单字符匹配字符功能.匹配任意1个字符(除了)[]匹配[]中列举的字符d匹配数字,即0-9D匹配非数字,即不是数字s匹配空白,... 查看详情

spritesheet自动检测单个sprite界限(代码片段)

...界用浅蓝色标记:如上所述,任何人都可以逐步介绍如何检测这些边界吗?答案这个怎么样?唯一的缺点是 查看详情

带有嵌套片段的导航抽屉 (ViewPager)

...ionDrawer并使用嵌套片段的应用程序。导航抽屉几乎是根据Android文档创建的-它可以工作。我希望导航抽屉始终可见,这就是为什么我有一个活动,我只是交换片段。其中一个片段是ViewPa 查看详情

android-compose-tab(代码片段)

SnakeTab-一个高度灵活与定制性的ComposeTab效果图开源地址:功能介绍:SnakeRowTab:SnakeRowTab:关于构造函数的解释使用示例:最近研究且学习Compose,目的是能够用Compose进行商业项目开发,过程中发现了Compose官... 查看详情

使用 jQuery 检测单个可拖动对象的多个可放置对象

】使用jQuery检测单个可拖动对象的多个可放置对象【英文标题】:DetectingmultipledroppablesforasingledraggableusingjQuery【发布时间】:2018-03-1302:09:38【问题描述】:我正在尝试将物品分配给人们,只要他们可以触摸/覆盖所有物品,人们... 查看详情