Bitte helfen Sie mir bei der Lösung?getArguments(). GetInt() beginnt von "1" zurückzukehren, stattdessen "0"
Ich habe eine Activity
mit ViewPager
und 5 RecyclerViewFragment
s, jeweils RecyclerFragment
dynamischen CardView
s enthält.
-Code für ViewPager
Adapter:
public class CustomFragmentPagerAdapter extends FragmentStatePagerAdapter {
private Board board;
private long boardID;
public CustomFragmentPagerAdapter(FragmentManager fm, Board board, long id) {
super(fm);
this.board = board;
this.boardID = id;
}
@Override
public int getCount() {
return 5;
}
@Override
public CharSequence getPageTitle(int position) {
return board.getMyLists().get(position).getName();
}
//Here I define fragment, int position - is a position of Fragment in ViewPager
@Override
public Fragment getFragment(int position) {
**return RecyclerViewFragment.newInstance(boardID, position);**
}
}
Weiter ist newInstance von Fragmente:
public static RecyclerViewFragment newInstance(long id, int listPosition){
Bundle args = new Bundle();
args.putLong(BUNDLE_ID, id);
args.putInt(BUNDLE_LIST_POSITION, listPosition);
RecyclerViewFragment fragment = new RecyclerViewFragment();
fragment.setArguments(args);
return fragment;
}
Ich speichere Fragment Position über Bundle - listPosition
Dann bekomme ich diese Position in OnCreateView durch
Also das Problem ist, dass, wenn ich int-Position von getArguments() erhalten, hat es nächste Sequenz - 1,2,3,4,0. Aber es schreibt in dieser Reihenfolge - 0,1,2,3,4
Vielleicht denken Sie, dass es egal ist, aber Realm ORM kehrt um. Wenn ich eine Info von DB über dynamische CardViews bekommen, beginnt Realm von der 0. Fragment, während getArguments() von 1. Und das Ding
ArrayIndexOutOfBoundsException
[Update] wirft I Log hinzugefügt. d newInstance und OnCreateView
public static RecyclerViewFragment newInstance(long id, int listPosition){
Bundle args = new Bundle();
args.putLong(BUNDLE_ID, id);
Log.d(TAG, listPosition + " Before put");
args.putInt(BUNDLE_LIST_POSITION, listPosition);
Log.d(TAG, listPosition + " After put");
RecyclerViewFragment fragment = new RecyclerViewFragment();
fragment.setArguments(args);
return fragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
tinyDB = new TinyDB(getContext());
boardPosition = tinyDB.getInt("boardPosition");
boardID = this.getArguments().getLong(BUNDLE_ID);
listPosition = this.getArguments().getInt(BUNDLE_LIST_POSITION, 0);
Log.d(TAG, listPosition + " Get ");
return inflater.inflate(R.layout.fragment_recyclerview, container, false);
}
und in LogCat ich weiter:
06-12 00:37:46.188 25265-25265/com.treggo.flexible D/mLogs: 0 Before put
06-12 00:37:46.188 25265-25265/com.treggo.flexible D/mLogs: 0 After put
06-12 00:37:46.188 25265-25265/com.treggo.flexible D/mLogs: 1 Before put
06-12 00:37:46.188 25265-25265/com.treggo.flexible D/mLogs: 1 After put
06-12 00:37:46.188 25265-25265/com.treggo.flexible D/mLogs: 2 Before put
06-12 00:37:46.188 25265-25265/com.treggo.flexible D/mLogs: 2 After put
06-12 00:37:46.189 25265-25265/com.treggo.flexible D/mLogs: 3 Before put
06-12 00:37:46.189 25265-25265/com.treggo.flexible D/mLogs: 3 After put
06-12 00:37:46.189 25265-25265/com.treggo.flexible D/mLogs: 4 Before put
06-12 00:37:46.189 25265-25265/com.treggo.flexible D/mLogs: 4 After put
06-12 00:37:46.190 25265-25265/com.treggo.flexible D/mLogs: 1 Get
06-12 00:37:46.266 25265-25265/com.treggo.flexible D/mLogs: 2 Get
06-12 00:37:46.322 25265-25265/com.treggo.flexible D/mLogs: 3 Get
06-12 00:37:46.397 25265-25265/com.treggo.flexible D/mLogs: 4 Get
06-12 00:37:46.452 25265-25265/com.treggo.flexible D/mLogs: 0 Get
P.S. In der Bypass Ausnahme, habe ich 9 CardViews, statt es von Realm
hinzufügen +/- 1 an der entsprechenden Stelle? : D – Vucko
Der ViewPager lädt gleichzeitig das aktuelle Fragment und die benachbarten Fragmente. Ich sehe nicht, wie Sie 1 anstelle von 0 zuerst erhalten könnten –
Übrigens sollten Sie das Logcat und den Code, der den Fehler auslöst, bereitstellen. * Fragen, die Debugging-Hilfe suchen ("Warum funktioniert dieser Code nicht?") Müssen das gewünschte Verhalten, ein spezifisches Problem oder einen Fehler und den kürzesten Code enthalten, der notwendig ist, um es in der Frage selbst zu reproduzieren. Siehe Erstellen eines [mcve] *. –