2017-08-13 4 views
0

Ich versuche, den Code dieser App zu ändern: https://github.com/udacity/ud839_ViewPager_Example/tree/quiz , damit MainActivity TuesdayFragment beim Start anstelle von MondayFragment anzeigt.Auswählen eines bestimmten Fragments, das in Aktivität angezeigt werden soll?

Ich möchte lernen, wie Sie die bestimmte fragment.java Datei auswählen, die Aktivität beim Start anzeigt.

Einige von Ihnen keine Zeit haben, können Code auf Github zu überprüfen, so ist es hier:

MainActivity.java

package com.example.android.viewpager; 

import android.os.Bundle; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 

/** 
* Displays a {@link ViewPager} where each page shows a different day of the week. 
*/ 
public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Set the content of the activity to use the activity_main.xml layout file 
     setContentView(R.layout.activity_main); 

     // Find the view pager that will allow the user to swipe between fragments 
     ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 

     // Create an adapter that knows which fragment should be shown on each page 
     SimpleFragmentPagerAdapter adapter = new SimpleFragmentPagerAdapter(getSupportFragmentManager()); 

     // Set the adapter onto the view pager 
     viewPager.setAdapter(adapter); 
    } 
} 

und es ist das Layout activity_main.xml Datei:

<?xml version="1.0" encoding="utf-8"?> 

<!-- Layout for the main screen --> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="com.example.android.viewpager.MainActivity"> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</LinearLayout> 

DienstagFragment.java, WednesdayFragment.java und MondayFragment.java sind sehr ähnlich, verwenden Sie einfach verschiedene layouts.xml, die verschiedene Wochentag Text angezeigt:

package com.example.android.viewpager; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

/** 
* Fragment that displays "Monday". 
*/ 
public class MondayFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_monday, container, false); 
    } 
} 

und es gibt eine SimpleFragmentPagerAdapter.java:

package com.example.android.viewpager; 

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

/** 
* Provides the appropriate {@link Fragment} for a view pager. 
*/ 
public class SimpleFragmentPagerAdapter extends FragmentPagerAdapter { 

    public SimpleFragmentPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     if (position == 0) { 
      return new MondayFragment(); 
     } else if (position == 1){ 
      return new TuesdayFragment(); 
     } else { 
      return new WednesdayFragment(); 
     } 
    } 

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

I las über Fragmente und Transaktionen und spielte mit der Transaktion und ersetzte, versuchte zu erzwingen, dass TuesdayFragment am Anfang der MainActivity mit folgenden Ideen angezeigt wurde:

getSupportFragmentManager().beginTransaction().replace(R.id.viewpager, TuesdayFragment).commit(); 

aber nichts hat funktioniert.

Frage: Kann jemand so freundlich sein und mir zeigen, welcher Code geändert/hinzugefügt werden muss, damit MainActivity mit dem Fragment beginnen kann, das ich will? Im Moment beginnt es immer mit MondayFragment.

Ich stecke fest, also wird es auch an dieser Stelle sehr geschätzt, dass ich sogar in die richtige Richtung gehe.

Antwort

2

Sobald Sie den Adapter-Set, Sie diese Methode in Ihrem onCreate Methode aufrufen können:

viewPager.setCurrentItem(indexOfItemYouWantToDisplay) 

Als Standard 0, wird MondayFragment angezeigt. Setzen Sie es auf 1 und TuesdayFragment wird angezeigt.

+0

Genau das, was ich gesucht habe. Danke KMP! – LearningToProgramStuff

Verwandte Themen