最新信息:
我已经把我的问题缩小到了一个问题,片段管理器保留了旧片段的实例,而我的viewpager与我的FragmentManager不同步.请参阅此问题... http://code.google.com/p/android/issues/detail?id=19211#makechanges.我仍然不知道如何解决这个问题.有什么建议...
我试图调试这个很长一段时间,任何帮助将不胜感激.我正在使用FragmentPagerAdapter,它接受一个像这样的片段列表:
List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this, Fragment1.class.getName()));
...
new PagerAdapter(getSupportFragmentManager(), fragments);
Run Code Online (Sandbox Code Playgroud)
实施是标准的.我正在为Fragments使用ActionBarSherlock和v4可计算性库.
我的问题是,在离开应用程序并打开其他几个应用程序并返回后,片段将丢失其对FragmentActivity的引用(即.getActivity() == null).我无法弄清楚为什么会这样.我试图手动设置,setRetainInstance(true);但这没有帮助.我想当我的FragmentActivity被破坏时会发生这种情况,但是如果我在收到日志消息之前打开应用程序,这仍然会发生.有什么想法吗?
@Override
protected void onDestroy(){
Log.w(TAG, "DESTROYDESTROYDESTROYDESTROYDESTROYDESTROYDESTROY");
super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)
适配器:
public class PagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public PagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
@Override
public int getCount() {
return this.fragments.size();
}
}
Run Code Online (Sandbox Code Playgroud)
我的一个碎片被剥夺了但是我很满意每一个被剥离但仍然无法工作的东西......
public class MyFragment extends Fragment implements MyFragmentInterface, OnScrollListener …Run Code Online (Sandbox Code Playgroud) 我有问题使我的片段通过Activity使用FragmentPagerAdapter,作为帮助类来实现对标签的管理以及连接ViewPager关联的所有细节TabHost.我的实现FragmentPagerAdapter与Android示例项目Support4Demos提供的一样.
主要问题是FragmentManager当我没有Id或Tag时,如何从特定片段中获取特定片段?FragmentPagerAdapter正在创建片段并自动生成Id和标签.
我有一个浏览片段的viewpager.我的FragmentPagerAdapter子类在getItem方法中创建了一个看似浪费的新片段.是否有一个FragmentPagerAdapter相当于convertView在listAdapter,使我重新使用已创建的片段?我的代码如下.
public class ProfilePagerAdapter extends FragmentPagerAdapter {
ArrayList<Profile> mProfiles = new ArrayList<Profile>();
public ProfilePagerAdapter(FragmentManager fm) {
super(fm);
}
/**
* Adding a new profile object created a new page in the pager this adapter is set to.
* @param profile
*/
public void addProfile(Profile profile){
mProfiles.add(profile);
}
@Override
public int getCount() {
return mProfiles.size();
}
@Override
public Fragment getItem(int position) {
return new ProfileFragment(mProfiles.get(position));
}
}
Run Code Online (Sandbox Code Playgroud) 我知道这里有一些关于这方面的话题,但我找不到一个可以为我的案子工作的解决方案.
我有一个使用自定义的工作滑动图库FragmentActivity,FragmentPagerAdapter其中包含碎片列表.
在内FragmentActivity是一个ImageView"删除".如果单击,deleteMedia()则调用该函数,然后应删除当前值,Fragment并Fragment显示以下内容.在我的例子中我该如何做到这一点?
FragmentActivity:
public class GalleryPagerActivity extends FragmentActivity implements OnClickListener {
private Intent intent;
private SharedPreferences settings;
private PagerAdapter mPagerAdapter;
private ViewPager mPager;
private List<Fragment> fragments;
private List<WhiteboardMedia> wiList;
private int selectedPosition;
private LinearLayout llTop;
private TextView tvTop;
private ImageView delete;
private ImageView share;
private TextView tvCounter;
private TextView tvFilename;
private TextView tvFilesize;
private TextView tvDate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try { …Run Code Online (Sandbox Code Playgroud) android android-fragments fragmentpageradapter android-fragmentactivity
是否可以保留为FragmentPagerAdapter内部创建的每个片段的实例FragmentPagerAdapter?
像这样的东西:
@Override
public Object instantiateItem(ViewGroup container, int position)
switch(position){
case 0:
fragment0 = super.instantiateItem(container, position);
return fragment0;
case 1:
fragment1 = super.instantiateItem(container, position);
return fragment1;
default:
return super.instantiateItem(container, position);
}
}
Run Code Online (Sandbox Code Playgroud)
我会遇到内存问题吗?
这个想法是MyFragmentPagerAdapter.fragment0为了获得对片段的引用.