-3
我知道有一些問題涉及這個問題,但由於它不使用fragment
轉換(我不知道它是如何工作的,因此我沒有使用它) 。findFragmentByTag在除了一個之外的所有片段上返回null
什麼我MainActivity
所做的是,它的tabBar
增加fragments
,並創建功能於一身的信息數據傳遞從一個fragment
到另一個fragment
。
public class MainActivity extends AppCompatActivity implements InputTab.SendMessage, FollowingTab.SendMessage, FollowerTab.SendMessage, ProfileTab.SendMessage, UserSearchResultTab.SendMessage {
private SectionsPageAdapter pageAdapter;
ViewPager viewPager;
public static String currentUser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container, new ProfileTab());
fragmentTransaction.commit();
pageAdapter = new SectionsPageAdapter(getSupportFragmentManager());
// Sets up the ViewPager with the sections adapter
viewPager = (ViewPager) findViewById(R.id.container);
setupViewPager(viewPager);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager((viewPager));
}
// Adds fragments to SectionsPageAdapter and gives names for the corresponding tab
private void setupViewPager(ViewPager viewPager) {
SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
adapter.addFragment(new InputTab(), "Search");
adapter.addFragment(new ProfileTab(), "Profile");
adapter.addFragment(new GithubTab(), "Github Repos");
adapter.addFragment(new FollowerTab(), "Followers");
adapter.addFragment(new FollowingTab(), "Followings");
adapter.addFragment(new UserSearchResultTab(), "test");
viewPager.setAdapter(adapter);
}
@Override
public void sendDataToProfile(String message) {
String tag = "android:switcher:" + R.id.container + ":" + 1;
ProfileTab profile = (ProfileTab) getSupportFragmentManager().findFragmentByTag(tag);
profile.displayReceivedData(message);
}
@Override
public void sendDataToFollowers(String message) {
String tag = "android:switcher:" + R.id.container + ":" + 3;
FollowerTab follower = (FollowerTab) getSupportFragmentManager().findFragmentByTag(tag);
follower.displayReceivedData(message);
}
數據順利通過到profileTab
,但是當我調試它,它給了我null
其他分頁像
FollowerTab follower = (FollowerTab) getSupportFragmentManager().findFragmentByTag(tag);
這一個。因此,每當我嘗試向FollowerTab
發送數據時,它都會導致崩潰。
我錯過了什麼,如何才能使它成爲非空fragment
?
對不起,我必須添加這個?在OnCreate或內部setupViewPager或sendData? – Dawn17
@ Dawn17,你想要對標籤的點擊執行一些操作,然後你可以使用標籤點擊監聽器或內部onclick方法,你可以編寫你的代碼,可以幫助你。或者你可以檢查[https://stackoverflow.com/questions/44132964/how-to-add-fragment-tag-in-a-fragmentpageradapter-to-reference-the-fragment-late],這可能會幫助你 –