我试图修改此应用的代码:https://github.com/udacity/ud839_ViewPager_Example/tree/quiz 使MainActivity在开始时显示TuesdayFragment而不是MondayFragment。
我想学习如何选择Activity在启动时显示的特定fragment.java文件。
你们中的一些人可能没有时间检查github上的代码,所以这里是:
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);
}
}
及其布局 activity_main.xml 文件:
<?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>
TuesdayFragment.java,WednesdayFragment.java和 MondayFragment.java 非常相似,只是使用不同的layouts.xml,它显示不同的星期几文本:
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);
}
}
并且有一个 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;
}
}
我正在阅读有关片段和事务以及使用事务和替换的尝试,试图强制在MainActivity的开头显示TuesdayFragment,其中包含以下想法:
getSupportFragmentManager().beginTransaction().replace(R.id.viewpager, TuesdayFragment).commit();
但没有任何效果。
问题:有人可以这么善良并告诉我需要修改/添加哪些代码,以便MainActivity能够以我想要的任何片段开始吗?现在它始终以MondayFragment开头。
我被卡住了,所以即使把我推向正确的方向,也会非常感激。
答案 0 :(得分:2)
设置适配器后,可以在onCreate方法中调用此方法:
viewPager.setCurrentItem(indexOfItemYouWantToDisplay)
默认为0时,显示MondayFragment。将其设置为1,将显示TuesdayFragment。