2

Ich habe ein Problem in einem meiner Fragmente, die ein TabLayout enthält. Das TabLayout und die Daten innerhalb jedes Tabs funktionieren gut, aber ich bekomme immer noch einen moveToState Fehler (Dieser Fehler tritt nicht auf, wenn ich zwischen dem ersten und dem letzten auswechsle, nur vom ersten zum mittleren und letzten zum mittleren). Meine Anwendung funktioniert immer noch gut mit dem Fehler, aber ich würde es lieber loswerden, um mögliche zukünftige Komplikationen zu vermeiden.Android - Mittlere Registerkarte Fehler in TabLayout in Fragment

Logcat

04-23 00:08:04.064 1598-1598/org.ramferno.scoutapplication.ramfernoscout W/FragmentManager: moveToState: Fragment state for TeamInfoTabOneFragment{1788a4f #9 id=0x7f0c00ca} not updated inline; expected state 3 found 2 
04-23 00:12:56.007 1598-1598/org.ramferno.scoutapplication.ramfernoscout W/FragmentManager: moveToState: Fragment state for TeamInfoTabThreeFragment{29125dC#7 id=0x7f0c00ca} not updated inline; expected state 3 found 2 

TeamInfoFragment.java (Mit tabLayout)

package org.ramferno.scoutapplication.ramfernoscout.fragments; 

import android.os.Bundle; 
import android.support.design.widget.TabLayout; 
import android.support.v4.app.Fragment; 
import android.support.v4.view.ViewPager; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import org.ramferno.scoutapplication.ramfernoscout.adapters.InfoPagerAdapter; 
import org.ramferno.scoutapplication.ramfernoscout.R; 

/** 
* A simple {@link Fragment} subclass. 
*/ 
public class TeamInfoFragment extends Fragment { 
    TabLayout tabLayout; 
    ViewPager viewPager; 
    InfoPagerAdapter infoPagerAdapter; 

    public TeamInfoFragment() { 
     // Required empty public constructor 
    } //End of TeamInfoFragment 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_team_info, container, false); 

     //Initializes variables 
     tabLayout = (TabLayout) view.findViewById(R.id.infoTabLayout); 
     viewPager = (ViewPager) view.findViewById(R.id.infoPager); 

     //Adds tabs to viewPager 
     infoPagerAdapter = new InfoPagerAdapter(getFragmentManager()); 
     infoPagerAdapter.addFragments(new TeamInfoTabOneFragment(), "Team Info"); 
     infoPagerAdapter.addFragments(new TeamInfoTabTwoFragment(), "Achievements"); 
     infoPagerAdapter.addFragments(new TeamInfoTabThreeFragment(), "Past Tournaments"); 

     //Sets adapter for viewPager then sets the same view pager for tabLayout 
     viewPager.setAdapter(infoPagerAdapter); 
     tabLayout.setupWithViewPager(viewPager); 

     return view; 
    } //End of onCreateView 
} //End of class 

InfoPagerAdapter.java

package org.ramferno.scoutapplication.ramfernoscout.adapters; 

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

import java.util.ArrayList; 

public class InfoPagerAdapter extends FragmentStatePagerAdapter { 
    ArrayList<Fragment> fragments = new ArrayList<>(); 
    ArrayList<String> tabTitles = new ArrayList<>(); 

    public void addFragments(Fragment fragments, String titles) { 
     this.fragments.add(fragments); 
     this.tabTitles.add(titles); 
    } //End of addFragments 

    public InfoPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } //End of InfoPagerAdapter 

    @Override 
    public Fragment getItem(int position) { 
     return fragments.get(position); 
    } //End of getItem 

    @Override 
    public int getCount() { 
     return fragments.size(); 
    } //Edn of getCount 

    public CharSequence getPageTitle(int position) { 
     return tabTitles.get(position); 
    } //End of getPageTitle 
} //End of class 

Bitte benachrichtigen, wenn mehr Informationen erforderlich sind.

+0

immer noch nach einer Lösung für mein Problem suchen –

+0

ich auch gleiches Problem bin, Haben Sie eine Lösung finden, –

Antwort

1

Dies ist eine Informations Lognachricht nur ... Es gibt an issue about it.

Projekt Mitglied # 14 ad ... @ android.com Nö, ist es egal, und das zusätzliche Protokoll wird in einer zukünftigen Version gegangen.

Für die neugierigen, FragmentManager.moveToState aktualisiert jetzt den neuen Fragment-Zustand, wie es geht und nicht am Ende, nachdem alle Statuswechsel Phasen abgeschlossen sind. Dies behebt einige interessante Fehler bei der Verwendung des Child Fragment Manager und ExecutePendingTransactions innerhalb eines der Lebenszyklus-Callbacks des Elternfragments.

Einer der Zustandsübergänge, wenn wir ein Fragment nach oben bringen, ist ein No-Op, das den Zustand nicht inline aktualisiert hat, und das Protokoll zeigt an, dass wir es stattdessen am Ende getan haben, genau wie wir vor 23.2 hätten.

Sorry für den zusätzliche Protokoll Lärm :)

+0

Bitte teilen Während dieses Link, um die Frage beantworten kann, Es ist besser, die wesentlichen Teile der Antwort hier einzubeziehen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/12283686) – pczeus

+0

Sorry :), edited – Pedr

Verwandte Themen