如题,搞了两天还是没搞定,所以上来求帮助了,望有人解决。
用了一个FragmentActivity作为主界面,包含了三个Fragment,实现了一个滑动的效果。
现在本人想讲其中一个Fragment,作为一个设置的界面,所以本人想使用PreferenceFragment来实现。
如下代码:
一、FragmentActivity代码:
用了一个FragmentActivity作为主界面,包含了三个Fragment,实现了一个滑动的效果。
现在本人想讲其中一个Fragment,作为一个设置的界面,所以本人想使用PreferenceFragment来实现。
如下代码:
一、FragmentActivity代码:
package huahua.viewpager; import java.util.ArrayList; import android.os.Bundle; import android.preference.PreferenceFragment; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.app.FragmentTransaction; import android.support.v4.view.PagerTabStrip; import android.support.v4.view.PagerTitleStrip; import android.support.v4.view.ViewPager; import android.util.Log; public class MainActivity extends FragmentActivity { private ViewPager m_vp; private fragment1 mfragment1; private fragment2 mfragment2; private fragment3 mfragment3; private ArrayList<Fragment> fragmentList;//页面列表 ArrayList<String> titleList = new ArrayList<String>();//标题列表 //通过pagerTabStrip可以设置标题的属性 private PagerTabStrip pagerTabStrip; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.v("huahua", "MainActivity-->onCreate()"); m_vp = (ViewPager)findViewById(R.id.viewpager); pagerTabStrip=(PagerTabStrip) findViewById(R.id.pagertab); mfragment1 = new fragment1(); mfragment2 = new fragment2(); mfragment3 = new fragment3(); fragmentList = new ArrayList<Fragment>(); fragmentList.add(mfragment1); fragmentList.add(mfragment2); fragmentList.add(mfragment3); titleList.add("第一页 "); titleList.add("第二页"); titleList.add("第三页 "); m_vp.setOffscreenPageLimit(0); m_vp.setAdapter(new MyViewPagerAdapter(getSupportFragmentManager())); //设置下划线的颜色 pagerTabStrip.setTabIndicatorColor(getResources().getColor(android.R.color.holo_green_dark)); //设置背景的颜色 pagerTabStrip.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_dark)); } public class MyViewPagerAdapter extends FragmentPagerAdapter{ public MyViewPagerAdapter(FragmentManager fm) { super(fm); // TODO Auto-generated constructor stub } @Override public Fragment getItem(int arg0) { return fragmentList.get(arg0); } @Override public int getCount() { return fragmentList.size(); } @Override public CharSequence getPageTitle(int position) { // TODO Auto-generated method stub return titleList.get(position); } } }
这个是其中的一个Fragment,本人想在这个Fragment页面上实现PreferenceFragment的效果,但是这样做行不通,
getActivity().getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefsFragement()).commit();
这行代码以及下面的PrefsFragement静态类都是本人期望实现的。真的不知道怎么样解决了。请教各位,万分感激。
这个Fragment和PreferenceFragment并不是继承关系,这里的Fragment使用的是android.support.v4.app.Fragment下面的Fragment。
package huahua.viewpager; import android.os.Bundle; import android.preference.PreferenceFragment; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class fragment3 extends Fragment{ private View mMainView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.v("huahua", "fragment3-->onCreate()"); LayoutInflater inflater = getActivity().getLayoutInflater(); mMainView = inflater.inflate(R.layout.fragment3, (ViewGroup)getActivity().findViewById(R.id.viewpager), false); getActivity().getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefsFragement()).commit();//希望添加的 } public static class PrefsFragement extends PreferenceFragment{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.v("huahua", "fragment3-->onCreateView()"); ViewGroup p = (ViewGroup) mMainView.getParent(); if (p != null) { p.removeAllViewsInLayout(); Log.v("huahua", "fragment3-->移除已存在的View"); } return mMainView; } }
解决方案
100
解决方法 沈亚成