在这篇文章中,我们将带领您了解PageRank的全貌,包括PR值的相关情况。同时,我们还将为您介绍有关android–FragmentStatePagerAdapterwithChildFragmen
在这篇文章中,我们将带领您了解PageRank的全貌,包括PR值的相关情况。同时,我们还将为您介绍有关android – FragmentStatePagerAdapter with ChildFragmentManager – FragmentManagerImpl.getFragment导、android – ViewPager FragmentStatePagerAdapter方向更改、android – ViewPager不会使用FragmentPagerAdapter进行滑动、android – Viewpager和FragmentPagerAdapter:页面视图删除的知识,以帮助您更好地理解这个主题。
本文目录一览:- PageRank(PR值)
- android – FragmentStatePagerAdapter with ChildFragmentManager – FragmentManagerImpl.getFragment导
- android – ViewPager FragmentStatePagerAdapter方向更改
- android – ViewPager不会使用FragmentPagerAdapter进行滑动
- android – Viewpager和FragmentPagerAdapter:页面视图删除
PageRank(PR值)
PageRank是沉迷Google的人们用来测验其站点在Google中的排名的一种衡量规范,SEO和查找引擎营销(SEM)专家也运用这个术语描绘网页在SERP中的排名以及Google依据排名算法给予站点的分数,无论怎么界说,PageRank都是SEO的重要部分。
android – FragmentStatePagerAdapter with ChildFragmentManager – FragmentManagerImpl.getFragment导
编辑2
我现在设法通过使用来自这里https://code.google.com/p/android/issues/detail?id=42601#c10的技巧摆脱了错误,这就是为什么我的最后一次编辑放在我的问题之上的原因.
但这导致了下一个错误:
java.lang.NullPointerException
at android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:569)
at android.support.v4.app.FragmentStatePagerAdapter.restoreState(FragmentStatePagerAdapter.java:211)
at android.support.v4.view.ViewPager.onRestoreInstanceState(ViewPager.java:1281)
at android.view.View.dispatchRestoreInstanceState(View.java:12043)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2688)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2694)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2694)
at android.view.View.restoreHierarchyState(View.java:12021)
at android.support.v4.app.Fragment.restoreViewState(Fragment.java:425)
at android.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:949)
at android.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:1104)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4800)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
at dalvik.system.NativeStart.main(Native Method)
现在我不知道从哪里继续……
编辑0 – 第一个问题
我得到以下异常:
java.lang.IllegalStateException: No activity
at android.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:1091)
at android.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:1086)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1877)
at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1492)
at android.support.v4.app._HoloFragment.performActivityCreated(_HoloFragment.java:251)
at android.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:947)
at android.support.v4.app.FragmentManagerImpl.movetoState(FragmentManager.java:1104)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4800)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
at dalvik.system.NativeStart.main(Native Method)
我不知道从哪里开始.我正在使用最新的支持库(v4,rev18).
一切正常,直到我添加一个Fragment,它将ViewPager与FragmentStatePagerAdapter结合在一起.
我到处都在使用支持库,我尝试了https://code.google.com/p/android/issues/detail?id=42601的解决方案……
但还没有任何效果……
我不知道从哪里开始,有人有提示吗?
编辑1:背景和代码
1)在我的MainActivity中,我使用以下内容:
第三页有viewpager …
public void setPage(int pos, boolean addToBackStack)
{
Fragment nextFragment = null;
FragmentTransaction transaction = null;
switch (pos)
{
case 0:
if (mFragmentAllRoutines == null)
mFragmentAllRoutines = new RoutinesListFragment();
if (!mFragmentAllRoutines.isVisible())
nextFragment = mFragmentAllRoutines;
break;
case 1:
if (mFragmentRoutine == null)
mFragmentRoutine = new RoutineFragment();
if (!mFragmentRoutine.isVisible())
nextFragment = mFragmentRoutine;
break;
case 2:
if (mFragmentDay == null)
mFragmentDay = new RoutineDayFragment();
if (!mFragmentDay.isVisible())
nextFragment = mFragmentDay;
break;
default:
break;
}
if (nextFragment != null)
{
// Fragment prevFragment = getSupportFragmentManager().findFragmentById(R.id.fragment);
transaction = getSupportFragmentManager().beginTransaction();
// if (prevFragment != null)
// transaction.detach(prevFragment);
transaction.replace(R.id.fragment, nextFragment, nextFragment.getClass().getName());
// transaction.attach(nextFragment);
if (addToBackStack)
transaction.addToBackStack(null);
transaction.commit();
}
}
2)第三个片段:
它是一个带有ViewPager和FragmentStatePagerAdapter的简单片段. FragmentStatePagerAdapter将getChildFragmentManager()作为FragmentManager获取.在某个地方似乎存在问题.
解决方法:
我需要看到更多的代码才能知道在哪里应用这个……但是我遇到了类似的情况……我以同样的方式解决了ChildFragmentManager问题,并得到了与你一样的NullPointerException.
我确实设法解决了……我会尝试描述我的解决方案,就像你提供的代码一样,我不确定在哪里应用“修复”…这真的是一个修复…它不是一个优雅的方式解决这个问题!然而它确实对我有所帮助,一旦我离开视图寻呼机,我就不需要恢复状态,因此对我来说没有任何不利因素.
我有多个Fragments,它实现了代码的静态位和onDetach(在https://code.google.com/p/android/issues/detail?id=42601#c10上),每个片段都有一个寻呼机,onCreateView我附加了一个扩展FragmentStatePagerAdapter的适配器.
在那些适配器上,我已经覆盖了restoreState方法,什么都不做
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
//do nothing here! no call to super.restoreState(arg0, arg1);
}
再次,这不是最好的方式……但它确实解决了我的问题.
祝你好运!
android – ViewPager FragmentStatePagerAdapter方向更改
这里有一点解释为什么:我以纵向显示一幅图像,景观中显示两幅图像,但总是算在内.如果我有10张照片要显示,我有10画像和5景观(总是两个).
但是现在我有一个奇怪的错误:
当我在索引5上的景观并打开设备时,ViewPager的当前页面设置为10.如果我再次将其重新设置为第5页.如果我将ViewPage向下滑动到第10页,则适配器的方法getItem为从来没有打过电话,ViewPage向我显示了一幅肖像画,而不是两幅景观.
怎么会这样呢?适配器或ViewPager中是否有缓存?在活动的onCreate中,一切都是新创建的,适配器以及ViewPager的数据(只有路径的字符串).
所以任何想法如何解决这个真的可怕的“功能”?
这里有一些代码:
的onCreate:
mViewPagerAdapter = new ReaderPageViewAdapter(getSupportFragmentManager(),getBaseContext(),mCurrentDocument.mPages,getResources() .getConfiguration().orientation); mPageReader = (ReaderViewPager) findViewById(R.id.pager); mPageReader.setAdapter(mViewPagerAdapter);
适配器getItem:
public Fragment getItem(final int index) { final PageInfo pageInfo = mPages.get(index); final PageFragment pageFragment = (PageFragment) PageFragment .instantiate(mContext,pageInfo.mClss.getName(),pageInfo.mArgs); return pageFragment; }
如果你需要更多的东西告诉我.谢谢
解决方法
@Override protected void onSaveInstanceState(final Bundle outState) { // super.onSaveInstanceState(outState); }
不要使用mViewPager.setSaveEnabled(false);
它结束了一个大的记忆力.在每次更改方向后,它将Fragments放入FragmentManager数组中,从不清理它.所以在多次更改方向后,可以达到超过100MB的内存使用.使用onSaveInstanceState方法是一种更好的方式.
android – ViewPager不会使用FragmentPagerAdapter进行滑动
这是我的主要laucher Activity,它扩展了FragmentActivity,
package com.myexample.fragmentdemoexample; import java.util.LinkedList; import java.util.List; import java.util.Vector; import android.os.Bundle; 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.ListFragment; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.ViewGroup; public class MainFragmentActivity extends FragmentActivity { private static int NUM_ITEMS = 4; MyAdapter mAdapter; ViewPager mPager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mPager = (ViewPager) findViewById(R.id.pager); instantiateFragments(); Log.i("MainFragmentActivity","MainFragmentActivity is Created"); } public void instantiateFragments() { List<Fragment> fragments = new Vector<Fragment>(); fragments.add(Fragment.instantiate(this,MyListFragment.class.getName())); fragments.add(Fragment.instantiate(this,DetailFragment.class.getName())); mAdapter = new MyAdapter(getSupportFragmentManager(),fragments); mPager.setAdapter(mAdapter); mPager.setCurrentItem(0); } public class MyAdapter extends FragmentPagerAdapter { private FragmentManager frmanager; private List<Fragment> fragments; public MyAdapter(FragmentManager fm,List<Fragment> fragList) { super(fm); frmanager = fm; fragments = fragList; } @Override public int getCount() { return NUM_ITEMS; } @Override public Fragment getItem(int position) { return fragments.get(position); } } }
这是我的layout / main.xml文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1" > </android.support.v4.view.ViewPager> <fragment android:id="@+id/listFragment" android:layout_width="150dip" android:layout_height="match_parent"android:tag="listFragment" > </fragment> <fragment android:id="@+id/detailFragment" android:layout_width="match_parent" android:layout_height="match_parent"android:tag="detailFragment" > <!-- Preview: layout=@layout/details --> </fragment> </LinearLayout>
和/layout-port/main.xml文件包含
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1" > </android.support.v4.view.ViewPager> <fragment android:id="@+id/listFragment" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
我不知道为什么View Pager没有刷到下一个片段……我怎么能这样做?我是第一次使用Fragment API ..所以请指出正确的方向.
注意有关其他文件,请参阅this question
解决方法
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1" > </android.support.v4.view.ViewPager> </LinearLayout>
这对于有类似问题的其他人可能会有所帮助……
android – Viewpager和FragmentPagerAdapter:页面视图删除
当添加新页面时,新的片段与该页面相关联.数据通过AsyncTask获取并显示在片段中.当用户选择删除页面时,想法是销毁页面和关联的片段.
一般来说,这一切都很好.我看到的问题如下:
>您有三页数据:
[第1页] [第2页] [第3页]
>删除除最后一页之外的任何页面,如第2页;根据需要消失:
[第1页] [第3页]
>添加新页面;但是,新页面不是一个空白的页面,而是从第3页显示数据(视图).
[第1页] [第3页] [第4页,但显示第3页的观点/数据应为空白]
我的活动中的页面删除代码如下:
// Destroy fragment for this page DataListFragment curFrag = getFragmentByName(currentPage); FragmentManager fm = getSupportFragmentManager(); fm.beginTransaction().remove(curFrag).commit(); fm.executePendingTransactions(); curFrag = null; // Remove page and update adapter mPageTitles.remove(position); mAdapter.notifyDataSetChanged();
使用调试器,它显示在执行executePendingTransactions()调用后,该片段从FragmentManager中删除.但是在FrampePagerAdapters调用mAdapter.notifyDataSetChanged()中,片段被添加回来,然后在创建新页面时显示.
我尝试使用FrameStatePagerAdapter,因为这应该允许破坏碎片,但它没有工作.在我的FragmentPagerAdapter的getItemPosition()方法中,我使用返回FragmentAdapter.POSITION_NONE;正如我遇到的另一篇SO文章所指出的.
似乎该页面的View不会被销毁,而是添加到新页面中.我尝试在新页面的视图上使用removeViewAt()方法,但是没有起作用.
作为新的,我相信我错过了一些明显的东西
解决方法
关于PageRank和PR值的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于android – FragmentStatePagerAdapter with ChildFragmentManager – FragmentManagerImpl.getFragment导、android – ViewPager FragmentStatePagerAdapter方向更改、android – ViewPager不会使用FragmentPagerAdapter进行滑动、android – Viewpager和FragmentPagerAdapter:页面视图删除的相关信息,请在本站寻找。
本文标签: