:あなたがここに見ることができるように[解決]
、私は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);
}
}
返信ありがとうございます。すでにsetCurrentItem()メソッドを使用しています。私の編集したコードを確認することができます。私の場合、各タブはリストビューの内容を表示しています。例えばグループタブが表示されます。特定のグループをクリックすると、グループチャットが開きます。グループチャット画面では、ツールバーの矢印をクリックして、3つのタブを含むアクティビティに戻ります。チャット画面、選択されたタブはGROUPS TABでなければなりません。しかし、常に選択されたタブとしてチャットタブを表示しています。 –
十分に具体的ではないと申し訳ありません。私はOnTabSelectedListener()内でsetCurrentItem()メソッドを使用することについて話していません。 –
グループチャットからあなたのアクティビティに戻るときは、setCurrentItem()メソッドの助けを借りて現在のアイテムを設定する必要があります。そうしないと、デフォルトの位置、つまり最初のタブに移動します。 –