无法将数据从活动发送到片段[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我已经尝试了几乎互联网上的每一个解决方案来解决我的问题,但没有运气!

我有一个名为TimeTableActivity的Activity:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_time_table);

    mSectionsPageAdapter = new SectionsPageAdapter(getSupportFragmentManager());

    mViewPager = (ViewPager) findViewById(R.id.container);
    setupViewPager(mViewPager);

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(mViewPager);

    Bundle extras = getIntent().getExtras();
    String stationTitle = extras.getString("stationTitle");
    int stationID = extras.getInt("stationID");
}

我想将这个“stationID”发送给Fragment。

android android-fragments android-activity
1个回答
0
投票

尝试下面的代码将(stationID)int从activity传递给fragment

YourActivity类:

private static FragmentManager fragmentManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_time_table);

    fragmentManager = getSupportFragmentManager();//Get Fragment Manager


    //Place below code where you want to send stationID.

    YourFragment frag = new YourFragment();//Get Fragment Instance
    Bundle data = new Bundle();//Use bundle to pass data
    data.putString("stationID", stationID);//put string, int, etc in bundle with a key value
    frag.setArguments(data);//Finally set argument bundle to fragment
    fragmentManager.beginTransaction().replace(R.id.fragmentContainer, frag).commit();//now replace the argument fragment               
}

YourFragment类:

public class YourFragment extends Fragment {
    public YourFragment() {
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragmentlayout, container, false);//Inflate Layout

        //Get Argument that passed from activity in "stationID" key value
        int getstationID = getArguments().getString("stationID");
        return view;//return view
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.