Android 片段中片段的ViewPager始终为空
这一次我有点发疯了。Android 片段中片段的ViewPager始终为空,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,这一次我有点发疯了。 我有一个片段,其中包含一个ViewPager。 我希望这个ViewPager包含一些片段。(始终相同,但参数不同)。 创建了片段(至少两个第一),但我的查看页面内容保持空白,没有任何内容移动。 我错过什么了吗 我的零碎活动 public class TrackingActivity extends FragmentActivity { static FragmentManager fragmentManager; static FragmentTransac
我有一个
片段
,其中包含一个ViewPager
。
我希望这个ViewPager
包含一些片段
。(始终相同,但参数不同)。创建了
片段
(至少两个第一),但我的查看页面
内容保持空白,没有任何内容移动。我错过什么了吗 我的零碎活动
public class TrackingActivity extends FragmentActivity {
static FragmentManager fragmentManager;
static FragmentTransaction fragmentTransaction;
static TrackingMensurationsFragment mensurationFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tracking);
fragmentManager = getSupportFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
mensurationFragment = new TrackingMensurationsFragment();
fragmentTransaction.add(R.id.fragmentContainerLL, mensurationFragment);
fragmentTransaction.commit();
}
}
我的跟踪测量碎片:
public class TrackingMensurationsFragment extends Fragment {
View fragmentView;
ViewPager pager;
FragmentAdapter pageAdapter;
TrackingMensurationPagerAdapter viewAdapter;
Handler mHandler;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
fragmentView = inflater.inflate(R.layout.fragment_tracking_mensurations, container, false);
// new setAdapterTask().execute();
return fragmentView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
pager = (ViewPager) getView().findViewById(R.id.pager);
String flux = ((MyApp) getActivity().getApplicationContext()).getWebResponse(18);
List<Fragment> fragments = new Vector<Fragment>();
try {
JSONArray jArray = new JSONObject(flux).getJSONArray("Mensurations");
for (int i = (jArray.length() - 1); i >= 0; i--) {
Bundle bundle = new Bundle();
bundle.putString("ARM_SIZE", jArray.getJSONObject(i).getString("ARM_SIZE"));
bundle.putString("THIGH_SIZE", jArray.getJSONObject(i).getString("THIGH_SIZE"));
bundle.putString("HIP_SIZE", jArray.getJSONObject(i).getString("HIP_SIZE"));
bundle.putString("WAIST_SIZE", jArray.getJSONObject(i).getString("WAIST_SIZE"));
bundle.putString("DietData_Date", jArray.getJSONObject(i).getString("DietData_Date").substring(0, 5));
fragments.add(Fragment.instantiate(getActivity(), TrackingMensurationPagerFragment.class.getName(), bundle));
}
} catch (JSONException e) {
e.printStackTrace();
}
pageAdapter = new FragmentAdapter(getChildFragmentManager(), fragments);
mHandler = new Handler();
mHandler.post(new Runnable() {
@Override
public void run() {
pager.setAdapter(pageAdapter);
}
});
}
}
public类trackingmeasurementfragment扩展了Fragment{
视图碎片视图;
查看寻呼机;
碎片适配器;
跟踪测量页面雷达视适配器;
汉德勒;
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
碎片视图=充气机。充气(R.layout.fragment\u tracking\u测量,容器,错误);
//新建setAdapterTask().execute();
返回碎片视图;
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
pager=(ViewPager)getView().findViewById(R.id.pager);
字符串流量=((MyApp)getActivity().getApplicationContext()).getWebResponse(18);
列表片段=新向量();
试一试{
JSONArray jArray=新的JSONObject(通量).getJSONArray(“测量”);
对于(int i=(jArray.length()-1);i>=0;i--){
Bundle=新Bundle();
bundle.putString(“ARM_SIZE”,jArray.getJSONObject(i).getString(“ARM_SIZE”);
bundle.putString(“大腿尺寸”,jArray.getJSONObject(i).getString(“大腿尺寸”);
bundle.putString(“HIP_SIZE”,jArray.getJSONObject(i).getString(“HIP_SIZE”);
bundle.putString(“腰围尺寸”,jArray.getJSONObject(i).getString(“腰围尺寸”);
bundle.putString(“DietData_Date”,jArray.getJSONObject(i).getString(“DietData_Date”).substring(0,5));
添加(Fragment.instantiate(getActivity(),TrackingMensurationPagerFragment.class.getName(),bundle));
}
}捕获(JSONException e){
e、 printStackTrace();
}
pageAdapter=新碎片适配器(getChildFragmentManager(),碎片);
mHandler=新处理程序();
mHandler.post(新Runnable(){
@凌驾
公开募捐{
寻呼机设置适配器(pageAdapter);
}
});
}
}
使用xml中的ViewPager:
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
我的碎片适配器:
public class FragmentAdapter extends FragmentStatePagerAdapter{
private List<Fragment> fragments;
public FragmentAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
Log.d("FragmentAdapter","constructor");
}
@Override
public Fragment getItem(int position) {
Log.d("FragmentAdapter","getItem "+position);
return this.fragments.get(position);
}
@Override
public int getCount() {
Log.d("FragmentAdapter","getCount: "+this.fragments.size());
return this.fragments.size();
}
@Override
public int getItemPosition(Object object){
return PagerAdapter.POSITION_NONE;
}
}
公共类FragmentAdapter扩展FragmentStatePagerAdapter{
私有列表片段;
公共碎片适配器(碎片管理器fm,列出碎片){
超级(fm);
this.fragments=片段;
Log.d(“碎片适配器”、“构造函数”);
}
@凌驾
公共片段getItem(int位置){
Log.d(“碎片适配器”、“getItem”+位置);
返回此.fragments.get(位置);
}
@凌驾
public int getCount(){
Log.d(“FragmentAdapter”,“getCount:+this.fragments.size());
返回此.fragments.size();
}
@凌驾
public int getItemPosition(对象){
返回PagerAdapter.POSITION\u无;
}
}
我的LogCat输出:
D/FragmentAdapter(30805):构造函数D/FragmentAdapter(30805):
getCount:12 D/dflkjghkldfjghdfkjg(30805):qgsdhgklsqdjghjdfskg
D/FragmentAdapter(30805):getCount:12 D/FragmentAdapter(30805):
getItem 0 D/FragmentAdapter(30805):getItem 1
D/FragmentAdapter(30805):getCount:12D/dalvikvm(30805):用于分配的GC
释放322K,30%释放12905K/18311K,暂停30毫秒,总计30毫秒
I/dalvikvm堆(30805):对于
737536字节分配D/dalvikvm(30805):分配释放1K的GC,29%
免费13624K/19079K,暂停20ms,总计20ms
D/跟踪测量页面碎片(30805):日期:2011年2月2日
D/跟踪测量页面碎片(30805):日期:2009年9月30日
D/FragmentAdapter(30805):getCount:12 D/FragmentAdapter(30805):
getCount:12 D/碎片适配器(30805):getCount:12
D/FragmentAdapter(30805):getCount:12 D/FragmentAdapter(30805):
getCount:12 D/碎片适配器(30805):getCount:12
D/FragmentAdapter(30805):getCount:12 D/FragmentAdapter(30805):
getCount:12 D/碎片适配器(30805):getCount:12
D/FragmentAdapter(30805):getCount:12
编辑:我的while片段的xml:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/mettreAJourTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@drawable/btn_vert_degrade_fort"
android:padding="10dp"
android:text="@string/maj_caps"
android:textColor="#FFFFFF" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginRight="10dp"
android:layout_toLeftOf="@id/mettreAJourTV"
android:text="@string/mensurations"
android:textColor="#d33274"
android:textSize="17dp" />
</RelativeLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="@string/infos_perso_evolution_poids" />
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
在我的例子中,问题是我的片段的根元素是滚动视图,它是ViewPager
的父元素。看起来在滚动视图中无法包含ViewPager
。有一个example@Raghunandan在本例中,ViewPager位于FragmentActivity中,而我的位于FragmentActivity中。在ACtivity/FragmentActivity中,我没有问题。fragment中有viewpager吗?在fragment中有viewpager没有什么奇怪的。。你能用dumpHieracyView来检查你的布局中是否有fragmentcontainer吗?@user1281750我会试试,从来没有用过。