我使用的是ViewPager连同FragmentStatePagerAdapter主办三个不同的片段:
当我想Fragment1从ViewPager在FragmentActivity.
有什么问题,我该如何解决?
最新信息:
我已经把我的问题缩小到了一个问题,片段管理器保留了旧片段的实例,而我的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) 介绍
我有一个Book的活动,其中包含一个类型为"page"的arraylist,并处理我决定使用FragmentStatePagerAdapter的所有页面,其中我的一个片段包含一个页面.
我为寻呼机中的每个片段和父活动之间的通信创建了一个接口.我在这个接口中需要的方法是更新页面中显示的页面,所以我为父活动创建了工具,用于从片段接收数据的接口并将它们存储在页面中以保存在arraylist中.
每个片段都有一个EditText,用户可以在其中编写,我设置addTextChangedListener来捕获用户停止写入的时刻.当用户停止在EditText中写入时,在onTextChanged()中,我调用activity father中实现的函数.
这是我的活动代码
public class BookEditorActivity implements BookEditorFragment.EditorFrToEditorActInterface {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.book_editor_activity);
Bundle extras = getIntent().getExtras();
b = (Book) extras.get("book");
setBookViewPager(b);
}
private void setBookViewPager(Book b) {
mBookViewPager = (ViewPager) findViewById(R.id.book_editor_pager);
mBookViewPagerAdapter = new BookViewPagerAdapter(getSupportFragmentManager(), b);
mBookViewPager.setAdapter(mBookViewPagerAdapter);
}
@Override
public void saveBookPageTextContent(String textContent) {
int current = mBookViewPager.getCurrentItem();
if (b.getPages().get(current) instanceof BookPageText) {
((BookPageText) b.getPages().get(current)).setContentPageText(textContent);
}
}
@Override
public void newBookPageText() {
int current = mBookViewPager.getCurrentItem();
BookPageText bookPageText = new BookPageText();
bookPageText.setContentPageText(""); …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager fragmentstatepageradapter