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


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

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

#1
سلام دوستان من چند وقتیه کار با اندروید رو شروع کردم و از سایت و انجمن تون هم خیلی استفاده کردم و مشکلاتم رو رفع کردم اما این یکی رو پیدا نکردم ممنون می شم راهنماییم کنید.

برنامه من دو تا اکتیوتی داره
یکیش منو هست با چند تا دکمه و دومی چند تا فرگمنت که به صورت تب بندی هست
حالا من می خوام با کلیک بر روی هر گزینه منو در اکتیویتی اول همون تب مربوط در اکتیویتی دوم نشان داده بشه
هر کاری می کنم نمیشه Huh book
پاسخ

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

#2
سلام.
ما چند مدل کد برای نمایش تب بندی داریم، شما باید ابتدا کد مربوط به اینکه کدام تب (Tab) به صورت پیش فرض نمایش داده شود را در بین کدها بیابید (بر اساس کدهایی که به کار رفته). یعنی اگر 6 تب داریم، بخشی از کدها، می تواند تب پیش فرض (default) را تعیین کند که مثلا تب پنجم باشد (ابتدا محتوای تب پنجم دیده می شود). این کد، یا در میان کدهای تب بندی وجود دارد و یا باید در اینترنت جستجو کنید و آن را برای کدهای استفاده شده، بیابید.
بنابراین فرض بر این است که تا اینجا می دانید که با چه کدی، تب پیش فرض را تغییر بدهید. اکنون مشکل اینجاست که ما در یک Activity دیگر هستیم و مثلا چند دکمه (Button) داریم که با اشاره بر روی هر کدام، باید به Activity حاوی تب ها برویم و متناسب با دکمه اشاره شده، یک تب نمایش داده شود (تب پیش فرض در Activity دوم برابر آن باشد).
برای اینکه تشخیص دهیم که کاربر بر روی کدام دکمه در Activity اول اشاره کردهف باید به هر دکمه، یک عدد (یا رشته) را اختصاص دهیم و هنگام رفتن به Activity دوم، آن مقدار را به Activity دوم بفرستیم (آن مقدار می تواند شماره تب باشد) :

کلید شماره 236

بعد در Activity دوم، مقدار را دریافت می کنیم و بر اساس آن، حالت بندی می کنیم که کدام تب باید به عنوان تب پیش فرض (تب انتخاب شده - تب نمایش داده شده) نمایش داده شود (با اجرای همان کد انتخاب تب پیش فرض).

---------------------------------------
به عنوان مثال، اگر تب بندی با استفاده از ViewPager و TabLayout ساخته شده باشد (یک روش استاندارد)، کد مشابه کد زیر برای تغییر تب پیش فرض (انتخاب یک تب) به کار می رود :

کد پی‌اچ‌پی:
TabLayout tabLayout = (TabLayoutfindViewById(R.id.tab_layout);
TabLayout.Tab tab tabLayout.getTabAt(4);
tab.select(); 


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

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

#3
سلام
با تشکر از ادمین  Flower
من تونستم با کد

کد:
ViewPager mViewPager;
...
...
mViewpager.setCurrentItem();

در داخل یک سویچ مشکل رو تقربا حل کنم، در برنامه 
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

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

#5
خیلی ممنون از توضیحاتتون و وقتی که برای پاسخ دادن گذاشتید.
پاسخ
 سپاس شده توسط admin ، شماره مجازی امارات


پرش به انجمن:


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