gpt4 book ai didi

java - 选择要在 Activity 中显示的特定 Fragment?

转载 作者:行者123 更新时间:2023-12-02 02:39:57 26 4
gpt4 key购买 nike

我正在尝试修改此应用程序的代码: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 非常相似,只是使用不同的layout.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;
}
}

我正在阅读有关 fragment 和事务的内容,并尝试使用事务和替换,试图强制 TuesdayFragment 在 MainActivity 开始时显示,其想法如下:

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

但没有任何效果。

问题:有人能好心告诉我需要修改/添加哪些代码,以便 MainActivity 能够从我想要的任何 Fragment 开始吗?现在它总是以 MondayFragment 开头。

我被困住了,所以此时即使将我推向正确的方向也会非常感激。

最佳答案

设置适配器后,您可以在 onCreate 方法中调用此方法:

viewPager.setCurrentItem(indexOfItemYouWantToDisplay)

默认为0,显示MondayFragment。设置为1,就会显示TuesdayFragment。

关于java - 选择要在 Activity 中显示的特定 Fragment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45664450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com