انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در تغییر تب (tab) در تب بندی، با کلیک از اکتیویتی دیگر (برنامه نویسی اندروید)

مشکل در تغییر تب (tab) در تب بندی، با کلیک از اکتیویتی دیگر (برنامه نویسی اندروید)

#4
شما با کدی که نوشته اید، تنها ViewPager را تغییر می دهید که در آن، محتوای Tab ها نمایش داده می شود. یعنی مثلا اگر Tab با استفاده از ViewPager و TabLayout ساخته شده باشد، محتوای تب ها (Tabs) در View های مربوط به ViewPager قرار می گیرند و چون شما مستقیما View مربوط به ViewPager را تغییر می دهید، محتویات (View) تب مورد نظر نمایش داده می شود، اما عنوان تب را مشاهده نمی کنیم.
بنابراین شما باید بر اساس TabLayout (البته اگر با آن ساخته شده)، تب را تغییر بدهید (کدهای استاندارد تب بندی ها را بررسی کنید و ببینید که به چه صورت، تب را انتخاب می کنند - مثلا همان کدی که بنده ذکر کردم). در کدهای استاندارد، ViewPager و TabLayout به یکدیگر وابسته هستند و با تغییر تب بر اساس TabLayout ، محتویات (View) مربوط به ViewPager نیز تغییر می کند.

--------------------------------------------------

توصیه می شود کد مربوط به تغییر تب برای کدهای تب بندی مورد استفاده خود را بیابید، اما چون در مورد یک شیوه کدنویسی، اطلاعاتی را ذکر کردم، در ادامه توضیحات بیشتری در مورد آنها می دهم.
بنده کد کاملتری را بر اساس ViewPager و TabLayout ذکر می کنم (کدها کامل نیست و برای درک ساختار کلی است، با دیدن ساختار، می توانید مثال های کامل را در اینترنت بیابید) :
فایل xml متناظر با Activity (کامل نیست و صرفا نحوه قرارگیری تگ های اصلی را بیان می کند) :

کد پی‌اچ‌پی:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/app_bar_main"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <android.support.design.widget.TabLayout
            android:id="@+id/tab_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary"
            android:layout_gravity="center_horizontal"
            app:tabMode="scrollable"
            app:tabTextAppearance="@style/Kelidestan_Custom_TabLayout_Text"
            android:theme="@style/ThemeOverlay.AppCompat.Dark" />

        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>

    </LinearLayout>

</RelativeLayout> 


کد در Activity :

کد پی‌اچ‌پی:
ViewPager viewPager = (ViewPagerfindViewById(R.id.viewpager);
TabLayout tabLayout = (TabLayoutfindViewById(R.id.tab_layout);

// Fragment manager to add fragment in viewpager we will pass object of Fragment manager to adpater class.
FragmentManager manager=getSupportFragmentManager();

//object of PagerAdapter passing fragment manager object as a parameter of constructor of PagerAdapter class.
PagerAdapter adapter=new PagerAdapter(manager);

//set Adapter to view pager
viewPager.setAdapter(adapter);

// 
viewPager.setOffscreenPageLimit(5); // content gone after 3 swipe --> 5 for 5 tab

//set tablayout with viewpager
tabLayout.setupWithViewPager(viewPager);

// adding functionality to tab and viewpager to manage each other when a page is changed or when a tab is selected
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));

//Setting tabs from adpater
tabLayout.setTabsFromPagerAdapter(adapter);

// انتخاب یک تب با کد
TabLayout.Tab tab tabLayout.getTabAt(4);
tab.select(); 

کلاس PagerAdapter :

کد پی‌اچ‌پی:
package com.kelidestan.example;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;

public class 
PagerAdapter extends FragmentStatePagerAdapter {
 
   public PagerAdapter(FragmentManager fm) {
 
       super(fm);
 
   }

 
   @Override
    public Fragment getItem
(int position) {

 
       Fragment frag=null;
 
       switch (position){
 
           case 0:
 
               frag = new Fragment_5();
 
               break;
 
           case 1:
 
               frag = new Fragment_4();
 
               break;
 
           case 2:
 
               frag = new Fragment_3();
 
               break;
 
           case 3:
 
               frag = new Fragment_2();
 
               break;
 
           case 4:
 
               frag = new Fragment_1();
 
               break;
 
       }
 
       return frag;
 
   }

 
   @Override
    public int getCount
() {
 
       return 5;
 
   }

 
   @Override
    public CharSequence getPageTitle
(int position) {
 
       String title=" ";
 
       switch (position){
 
           case 0:
 
               title="عنوان 1";
 
               break;
 
           case 1:
 
               title="عنوان 2";
 
               break;
 
           case 2:
 
               title="عنوان 3";
 
               break;
 
           case 3:
 
               title="عنوان 4";
 
               break;
 
           case 4:
 
               title="عنوان 5";
 
               break;
 
       }

 
       return title;
 
   }


که در آن، Fragment_1 تا Fragment_5 و فایل های xml متناظر با آنها را باید بر اساس محتوای مورد نظرتان برای تب ها طراحی کنید (به مثال های موجود در وب سایت ها مراجعه نمایید).

Flower
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط mostafa-ne


پیام‌های این موضوع
RE: مشکل در تغییر تب (tab) در تب بندی، با کلیک از اکتیویتی دیگر (برنامه نویسی اندروید) - توسط admin - ۱۳۹۵/۰۶/۱۵, ۱۲:۵۷ ب.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان