fragment 界面初始化Activity其中一个fragment 界面初始化有两个界面怎么办

在近期的练手项目中,我们使用到了Android Fragment。在应用的交互中,我可能需要实现:
从当前的fragment跳转到另一个fragment
从当前的fragment跳转到一个activity中
从当前的activity跳转到一个fragment中
网上提供的思路较多,这里总结了一套自己的方法。
一、从当前的fragment跳转到另一个fragment
1.在相应fragment全局中声明fragment管理对象及事务对象。
private FragmentM
private FragmentT
2.在OnCreate方法中初始化fragment管理对象
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
manager = getFragmentManager();
3.从 FragmentManager 获得一个FragmentTransaction实例
MyJDEditFragment myJDEditFragment = new MyJDEditFragment();
ft = manager.beginTransaction();
ft.replace(R.id.realtabcontent, myJDEditFragment);
ft.addToBackStack(null);
ft.commit();
那么如何在fragment切换的时候还可以传递参数呢?
我们可以使用setArguments()方法绑定一个bundle对象传递到另外一个fragment中。
myJDEditFragment.setArguments(bundle)
在另外一个fragment中(myJDEditFragment)使用getArguments()可以拿到bundle对象。
二、从当前的fragment跳转到一个activity中
由于fragment可以使用 getActivity() 访问Activity实例,所以这一步实现很简单。
intent=new Intent(getActivity(), UserLoginActivity.class);
startActivity(intent);
三、从当前的activity跳转到一个fragment中
如果是从fragment跳转到activity中,然后想从这个activity中再跳转回fragment,这时直接finish这个activity即可。
如果需求是这样的:
在“更多”页面里点击“账号管理”弹出一个activity,处理完这个activity后我们要跳转到”我的京东“中,该如何实现呢?
在对应activity中使用意图跳转到MainActivity中,这里通过意图塞入了一个标识符(更严谨的方式是通过请求码和结果码实现)。
Intent intent = new Intent(UserLoginActivity.this,MainActivity.class);
intent.putExtra("userloginflag", 1);
startActivity(intent);
2.在MainActivity的onResume()方法中得到这个标识符,并且切换到相应的Tab即可。
protected void onResume() {
int id = getIntent().getIntExtra("userloginflag", 0);
if (id == 1 ) {
mTabHost.setCurrentTab(3);
super.onResume();
附上MainActiviy.java的源码及布局文件activity_main.xml
package com.example.jds
import android.os.Bundle
import android.support.v4.app.FragmentActivity
import android.support.v4.app.FragmentManager
import android.support.v4.app.FragmentTabHost
import android.support.v4.app.FragmentTransaction
import android.support.v4.view.ViewPager
import android.view.LayoutInflater
import android.view.View
import android.widget.ImageView
import android.widget.Toast
import android.widget.TabHost.TabSpec
import android.widget.TextView
import com.example.jds.fragment.CarFragment
import com.example.jds.fragment.CategoryFragment
import com.example.jds.fragment.IndexFragment
import com.example.jds.fragment.MoreFragment
import com.example.jds.fragment.MyJDIndexFragment
import com.example.jds.fragment.SettingFragment
import com.example.jds.util.UserApplication
public class MainActivity extends FragmentActivity {
public MyJDIndexFragment myJDIndexFragment
// 更多页面
public MoreFragment moreFragment
// 设置页面
public SettingFragment settingFragment
// 声明控件对象
public FragmentTabHost mTabHost
// 布局填充器
private LayoutInflater inflater
// 存放文本的数组
private int tabHostTextArray[] = { R.string.tabhost_index,
R.string.tabhost_category, R.string.tabhost_car,
R.string.tabhost_my_jd, R.string.tabhost_more }
// 存放图标的数组
private int tabHostIconArray[] = { R.drawable.tab_home_index,
R.drawable.tab_home_category, R.drawable.tab_home_car,
R.drawable.tab_home_my_jd, R.drawable.tab_home_more }
// 声明片段对应的数组
private Class fragments[] = { IndexFragment.class, CategoryFragment.class,
CarFragment.class, MyJDIndexFragment.class, MoreFragment.class }
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 初始化布局填充器对象
inflater = LayoutInflater.from(this)
// 查找tabHost对象
mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost)
// 启动tabHost
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent)
// 遍历片段
for (int i = 0
// 创建一个TabSpec
TabSpec tabSpec = mTabHost.newTabSpec(
getResources().getString(tabHostTextArray[i]))
.setIndicator(getTabItemView(i))
// 加入到TabHost中
mTabHost.addTab(tabSpec, fragments[i], null)
initview()
public View getTabItemView(int i) {
View view = inflater.inflate(R.layout.tab_nav_item, null)
ImageView tab_nav_img = (ImageView) view.findViewById(R.id.tab_nav_img)
TextView tab_nav_text = (TextView) view.findViewById(R.id.tab_nav_text)
// 设置图片及文本
tab_nav_img.setImageResource(tabHostIconArray[i])
// Toast.makeText(this, tabHostIconArray[i], 1).show()
tab_nav_text.setText(getResources().getString(tabHostTextArray[i]))
return view
private void initview() {
FragmentManager fm = getSupportFragmentManager()
FragmentTransaction ft = fm.beginTransaction()
moreFragment = new MoreFragment()
myJDIndexFragment = new MyJDIndexFragment()
// ft.add(R.id.realtabcontent, accountManagerFragment)
// ft.add(R.id.realtabcontent, myJDFragment)
settingFragment = new SettingFragment()
ft.commit()
protected void onResume() {
int id = getIntent().getIntExtra("userloginflag", 0)
if (id == 1 ) {
mTabHost.setCurrentTab(3)
super.onResume()
&LinearLayout xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#DDDDDD"
tools:context="${relativePackage}.${activityClass}" &
&FrameLayout
android:id="@+id/realtabcontent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/&
&android.support.v4.app.FragmentTabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_tabhost"&
&FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0"/&
&/android.support.v4.app.FragmentTabHost&
&/LinearLayout&
本文已收录于以下专栏:
相关文章推荐
Activity中加载不同的fragment  / Fragment中加载不同的fragment
主Activity中加载(切换)多个fragment(也可以理解为activity跳转...
转载请标明出处:http://blog.csdn.net/lmj/article/details/,本文出自:【张鸿洋的博客】很久以前写过两篇Fragment的介绍,...
8. wrong 2nd argument type found 'android.app.Fragment.' required 'Android.support.v4.app.Fragment'
...
需求:从一个Fragment跳转到另一个Fragment,并且还要传递数据,就像Activity的跳转一样。
 1、首先在第一个Fragment 里面拿到FragmentManger 和Fra...
前言:不知不觉工作已经八个月了,深感没学到什么东西啊,今年要努力了。但以后真的会用到android技术吗,根本回答不了这个问题,只能说,它是一个在任何事情都不成功的情况下,保命的根本而已,但技术还是要...
今天遇到一个问题,虽然不是很小但是也不是很大,就是从fragmentA准确的跳到fragmentB去,还有就是从Activity准确的跳到fragment 去,后面这个问题让我想了好半天,最后还是处理...
一、直接getActivity,使用activity的fragmenttransation的replace方法替换
private void changeToAnotherFragment(){
项目当中遇到了,一个头疼问题,布局主要采用MainActivity 挂载 Fragment 来显示内容,并实现点击底部标签实现切换。但是头疼的是项目当中有一个需求就是点击某个Fragment也面上的按...
作为一个android的菜鸟,前些天在做项目的时候yo
他的最新文章
讲师:王哲涵
讲师:王渊命
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)android如何结合 ListFragment
与一个正常 Fragment
在 FragmentActivity
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.
你如何能结合 ListFragment 与正常的fragments?我 application 作品如果我使用只是fragment,但是如果我换成fragments之一 ListFragment application 当我运行它,即使没有给出的错误时停止。
我 FragmentActivity :
package com.example.
import com.example.tabswithswipe.R;
import your_package_name.adapter.TabsPagerA
import android.os.B
import android.app.ActionB
import android.app.ActionBar.T
import android.app.FragmentT
import android.support.v4.app.FragmentA
import android.support.v4.view.ViewP
import android.view.M
public class MainActivity extends FragmentActivity implements
ActionBar.TabListener {
private ViewPager viewP
private TabsPagerAdapter mA
private ActionBar actionB
// Tab titles
private String[] tabs = { "Top Rated", "Games", "Movies" };
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialization
viewPager = (ViewPager) findViewById(R.id.pager);
actionBar = getActionBar();
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Adding Tabs
for (String tab_name : tabs) {
actionBar.addTab(actionBar.newTab().setText(tab_name)
.setTabListener(this));
* on swiping the viewpager make respective tab selected
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
public void onPageSelected(int position) {
// on changing the page
// make respected tab selected
actionBar.setSelectedNavigationItem(position);
public void onPageScrolled(int arg0, float arg1, int arg2) {
public void onPageScrollStateChanged(int arg0) {
public boolean onCreateOptionsMenu(Menu menu) {
// I this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
public void onTabReselected(Tab tab, FragmentTransaction ft) {
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// on tab selected
// show respected fragment view
viewPager.setCurrentItem(tab.getPosition());
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
我的 TabbsPagerAdapter:
package your_package_name.
import android.support.v4.app.F
import android.support.v4.app.FragmentM
import android.support.v4.app.FragmentPagerA
import android.support.v4.app.ListF
public class TabsPagerAdapter extends FragmentPagerAdapter {
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
public Fragment getItem(int index) {
switch (index) {
// Top Rated fragment activity
return new NewUser();
// Games fragment activity
return new MyListFragment();
// Movies fragment activity
return new MoviesFragment();
public int getCount() {
// get item count - equal to number of tabs
我 ListFragment :
package your_package_name.
import android.os.B
import android.support.v4.app.ListF
import android.view.LayoutI
import android.view.V
import android.view.ViewG
import android.widget.ArrayA
import android.widget.ListV
public class MyListFragment extends ListFragment {
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
ArrayAdapter&String& adapter = new ArrayAdapter&String&(getActivity(),
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
public void onListItemClick(ListView l, View v, int position, long id) {
// do something with the data
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(android.R.layout.simple_list_item_1, container, false);
return rootV
解决方法 1:
A ListFragment 只是包装周围 Fragment ,但已经有 ListView 准备好供您使用。
这就可以做到:
public class MyListFragment extends ListFragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2" };
ArrayAdapter&String& adapter = new ArrayAdapter&String&(getActivity(),
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
return super.onCreateView(inflater,container,savedInstanceState);
public void onListItemClick(ListView l, View v, int position, long id) {
// do something with the dataCC 检测页面
Please turn JavaScript on and reload the page.
您访问的站点
开启了 CC 防护,当前客户端正在接受检测
请耐心等待几秒钟,您的客户端将很快获取您请求的资源内容 &}

我要回帖

更多关于 fragment切换刷新界面 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信