2016-04-13 19 views
1

:あなたがここに見ることができるように[解決]

Screenshot 、私は3つのCHATという名前のタブ、グループ、およびお問い合わせをしていますそれぞれのタブにはいくつかのコンテンツが表示されています。グループタブにはグループ数が表示されています。各グループをクリックするとグループチャット画面が開きます。グループチャット画面には、ツールバーがあります。

Toolbar toolbarGroupChat = (Toolbar) findViewById(R.id.toolbarGroupChat); 
    setSupportActionBar(toolbarGroupChat); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setTitle(upperCase(group_name)); 


    //ViewPager 
    viewPager = (ViewPager) findViewById(R.id.viewPager); 
    //Initializing PagerAdapter 
    PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount()); 
    viewPager.setAdapter(pagerAdapter); 

    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      viewPager.setCurrentItem(tab.getPosition()); 
     } 

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

     } 

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

     } 
    }); 

PagerAdapter.java

public class PagerAdapter extends FragmentStatePagerAdapter { 
    private int noOfTabs; 

    public PagerAdapter(FragmentManager fm, int noOfTabs) { 
     super(fm); 
     this.noOfTabs = noOfTabs; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
      case 0: 
       ChatFragment chatFragment = new ChatFragment(); 
       return chatFragment; 
      case 1: 
       GroupsFragment groupsFragment = new GroupsFragment(); 
       return groupsFragment; 
      case 2: 
       ContactsFragment contactsFragment = new ContactsFragment(); 
       return contactsFragment; 
      default: 
       return null; 
     } 
    } 

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

ツールバーの矢印をクリックすると、私のアプリケーションは、三のtabs.Myの問題を含む画面に移動し、現在選択されたタブである私が活動からFriendListActivity .Whenに移動していたときに、常に私は、タブをチャットですグループチャット画面からFriendListActivityに移動すると、現在選択されているタブは[GROUPS]タブになります。問題を解決するのを手伝ってください。

編集済みの作業コード: アクティビティから特定のタブに移動するときは、アクティビティのインテントを使用してTAb番号を渡す必要があります。ツールバーの戻るボタンをクリックするには、次のコードを使用します。 getSupportParentActivityIntent()メソッド:

public Intent getSupportParentActivityIntent() { 
    final Bundle bundle = new Bundle(); 
    final Intent intent = new Intent(this, FriendsListActivity.class); 
    bundle.putString("TabNumber", tab_number); 
    intent.putExtras(bundle); 
    return intent; 
} 

は今3つのタブを含むアクティビティの内部で、次のコードを使用し

 final Intent intent = getIntent(); 
     if (intent.hasExtra("TabNumber")) { 
      String tab = intent.getExtras().getString("TabNumber"); 
      Log.e("TabNumberFriendList",tab); 
      switchToTab(tab); 
     } 
public void switchToTab(String tab){ 
     if(tab.equals("0")){ 
      viewPager.setCurrentItem(0); 
     }else if(tab.equals("1")){ 
      viewPager.setCurrentItem(1); 
     }else if(tab.equals("2")){ 
      viewPager.setCurrentItem(2); 
     } 
    } 

答えて

4

特定のタブに移動するには、あなたのViewPagerオブジェクトのsetCurrentItem(int型の位置)メソッドを使用します。

+0

返信ありがとうございます。すでにsetCurrentItem()メソッドを使用しています。私の編集したコードを確認することができます。私の場合、各タブはリストビューの内容を表示しています。例えばグループタブが表示されます。特定のグループをクリックすると、グループチャットが開きます。グループチャット画面では、ツールバーの矢印をクリックして、3つのタブを含むアクティビティに戻ります。チャット画面、選択されたタブはGROUPS TABでなければなりません。しかし、常に選択されたタブとしてチャットタブを表示しています。 –

+0

十分に具体的ではないと申し訳ありません。私はOnTabSelectedListener()内でsetCurrentItem()メソッドを使用することについて話していません。 –

+0

グループチャットからあなたのアクティビティに戻るときは、setCurrentItem()メソッドの助けを借りて現在のアイテムを設定する必要があります。そうしないと、デフォルトの位置、つまり最初のタブに移動します。 –

0

をあなたはtabHostを作成している場合がありますので、それを作るに行われたときに、あなたが使用する必要があります -

他のタブを設定するときはいつでも、異なるコードで同じコードを使用できます。

Ref

0

スクリーンショットから、Tablayoutを使用している必要があります。そこから、ビルド機能でこれらの2つを使用できます。

tabLayout.getSelectedTabPosition(); 

保存いくつかの変数では、このタブと、この関数ではその整数値を設定するのonCreate ...

tabLayout.getTabAt(<Your last selected tab>); 

・ホープ、このことができます。.. :)

0

ます。また、この作品を使用することができますコード:

グループチャットアクティビティ(例:group_chat_activity)にpublic static TabToOpen = 1を追加します。

onResume()で使用して、ViewPagerオブジェクトが特定のタブに移動するようにしてください。これは、スライド作業で特定のタブにアクセスするためのボタンが必要な場合に特に便利です。