是否可以保留为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为了获得对片段的引用.
我正在开发一个由3个List片段组成的Android应用程序.我正在使用一个ViewPager对象让用户在片段之间滑动.我在片段中使用了相同的代码.但是当我改变它以使用列表片段时,我收到了一个错误
the return type is incompatible with FragmentPagerAdapter.getItem(int)
Run Code Online (Sandbox Code Playgroud)
我被困在这里几个小时.请帮忙..
我的片段活动
public class PageViewActivity extends FragmentActivity {
MyPageAdapter pageAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page_view);
List<ListFragment> fragments = getFragments();
pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments);
ViewPager pager = (ViewPager)findViewById(R.id.viewpager);
pager.setAdapter(pageAdapter);
}
private List<ListFragment> getFragments(){
List<ListFragment> fList = new ArrayList<ListFragment>();
fList.add(AllMsgFragment.newInstance("Fragment 1"));
fList.add(ErrorMsgFragment.newInstance("Fragment 2"));
fList.add(SuccessMsgFragment.newInstance("Fragment 3"));
return fList;
}
Run Code Online (Sandbox Code Playgroud)
和我的FragmentPageAdapter
class MyPageAdapter extends FragmentPagerAdapter {
private List<ListFragment> fragments;
public MyPageAdapter(FragmentManager fm, List<ListFragment> fragments) {
super(fm);
this.fragments = fragments;
} …Run Code Online (Sandbox Code Playgroud) android android-fragments fragmentpageradapter android-listfragment
我正在尝试让我的应用从标签1更改为标签3.标签位于自定义TabsPagerAdapter中extends FragmentPagerAdapter.
我试图更改标签喜欢这个,但它导致NullPointerException.机制是不同的FragmentPagerAdapter?
TabHost host = (TabHost) getActivity().findViewById(android.R.id.tabhost);
host.setCurrentTab(2);
Run Code Online (Sandbox Code Playgroud) java android android-tabhost android-fragments fragmentpageradapter
我无法为每个选项卡创建动态布局,我可以通过此构造函数动态创建选项卡(公共MyPagerAdapter(FragmentManager fm,int noOfTabs)),但是不要为每个应创建的每个片段创建每个选项卡的视图. dyanmic.
public class MyPagerAdapter extends FragmentPagerAdapter
{
private final String[] TITLES = { "Categories", "Home", "Top Paid", "Top Free", "Top Grossing", "Top New Paid",
"Top New Free", "Trending" };
int noOfTabs;
**public MyPagerAdapter(FragmentManager fm , int noOfTabs)
{
super(fm);
this.noOfTabs = noOfTabs;
}**
/*public MyPagerAdapter(FragmentManager fm)
{
super(fm);
}*/
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
@Override
public int getCount() {
return noOfTabs; //TITLES.length;
}
@Override
public Fragment getItem(int position) {
return SuperAwesomeCardFragment.newInstance(position);
}
} …Run Code Online (Sandbox Code Playgroud) 我正在将一些Android Facebook代码从一个转换Activity为一个Fragment.在切换之前一切正常,但现在onComplete()回调没有被执行.
Facebook代码不能与Fragments一起使用,或者我做错了什么?
这是原始代码(在a中SherlockActivity):
if (!mFacebook.isSessionValid()) {
mFacebook.authorize(MyActivity.this, permissions, new DialogListener() {
@Override
public void onComplete(Bundle values) { ... } // CALLED AS EXPECTED
}
}
Run Code Online (Sandbox Code Playgroud)
这是新代码(在SherlockFragment中):
if (!mFacebook.isSessionValid()) {
mFacebook.authorize(getActivity(), permissions, new DialogListener() {
@Override
public void onComplete(Bundle values) { ... } // DOES NOT GET CALLED
}
}
Run Code Online (Sandbox Code Playgroud)
Activity和Fragment都包含与Facebook要求相同的onActivityResult():
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mFacebook.authorizeCallback(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助! …
android facebook-android-sdk android-fragments actionbarsherlock fragmentpageradapter
我在FragmentPagerAdapter中有大约20个片段,它们包含一个列表,它从中拾取片段,因此不会重新创建片段.
private List<TitledFragment> fragments;
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
this.fragments = new ArrayList<TitledFragment>();
}
@Override
public Fragment getItem(int i) {
return fragments.get(i).getFragment();
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return fragments.get(position).getTitle();
}
public synchronized List<TitledFragment> getFragments() {
return fragments;
}
public synchronized void addFragment(TitledFragment fragment) {
fragments.add(fragment);
notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)
FragmentPagerAdapter被设置为ViewPager的适配器,之后我重新排序片段(洗牌仅用于测试)
Collections.shuffle(mSectionsPagerAdapter.getFragments());
mSectionsPagerAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
由于某种原因,只有标题的顺序被改变,即使它为getItem返回不同的片段,因为顺序是不同的.为什么这样,我怎么能绕过它呢?
java android android-fragments android-viewpager fragmentpageradapter
这是我的代码关于在6个片段之间滑动,我想做一个事件,当我从一个片段刷到另一个从加载一些东西,所以请任何帮助我怎么能这样做??? ,,和哪里我可以把代码,我想到进度对话框启动它在函数获取标题并在片段的开头取消它是否适用?这是我的代码:
package com.example.my_finalswipe;
import java.util.List;
import java.util.Locale;
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.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class MainActivity extends FragmentActivity {
SectionsPagerAdapter mSectionsPagerAdapter;
ViewPager mViewPager;
List<Fragment> fragments ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create the adapter that will return a fragment for each of the three
// primary sections of the app.
fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this, FragmentOne.class.getName()));
fragments.add(Fragment.instantiate(this, FragmentTwo.class.getName()));
fragments.add(Fragment.instantiate(this, FragmentThree.class.getName()));
fragments.add(Fragment.instantiate(this, …Run Code Online (Sandbox Code Playgroud) java android android-fragments android-viewpager fragmentpageradapter
我想从FragmentActivity中更改片段中的ImageView(在代码中创建).(XML中没有片段和标记).
从FragmentActivity扩展的MainActivity和从GooglePlayServicesClient.ConnectionCallbacks实现的:
...
FragmentAdapter mAdapter;
ViewPager mPager;
...
public void onCreate(Bundle savedInstanceState){
...
FragmentManager fm = getSupportFragmentManager();
mAdapter = new FragmentAdapter(fm);
mPager.setAdapter(mAdapter);
...}
@Override
public void onConnected(Bundle connectionHint){
//*** I want to change a ImageView on Fragment1 here
}
Run Code Online (Sandbox Code Playgroud)
从FragmentPagerAdapter扩展的FragmentAdapter:
...
private FragmentManager mFragmentManager;
public FragmentAdapter(FragmentManager fm){
super(fm);
}
@Override
public Fragment getItem(int pos){
// String name = makeFragmentName(R.id.mainPager, pos);
// Fragment fragmentObject = mFragmentManager.findFragmentByTag(name);
Fragment fragmentObject = null;
switch(pos){
case 0:
fragmentObject = new Fragment1();
break;
...
}
return …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager fragmentpageradapter android-fragmentactivity
我一直在寻找它,而我发现的只是它们之间的区别。那不是重点。
如果在中使用FragmentStatePagerAdapter,ViewPager最终将完成与相同的操作FragmentPagerAdapter,但消耗的内存更少。如果是这样,我为什么要使用FragmentPagerAdapter?
使用的好处是FragmentPagerAdapter什么?
android android-viewpager fragmentpageradapter fragmentstatepageradapter
我有一个FragmentPagerAdapter处理获取当前片段,跟踪选项卡数量和设置每个选项卡的选项卡标题.
public class ClothingSectionsPagerAdapter extends FragmentPagerAdapter {
private String[] mCategories;
public ClothingSectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
public void setContext(Context context) {
mCategories = context.getResources().getStringArray(R.array.category);
}
@Override
public Fragment getItem(int position) {
return ClothingCategoryFragment.newInstance(mCategories[position]);
}
@Override
public int getCount() {
return mCategories.length;
}
@Override
public CharSequence getPageTitle(int position) {
Log.d("getPageTitle", mCategories[position]);
return mCategories[position];
}
}
Run Code Online (Sandbox Code Playgroud)
在我的活动中,我实现了这个类.
ClothingSectionsPagerAdapter sectionsPagerAdapter =
new ClothingSectionsPagerAdapter(getSupportFragmentManager());
sectionsPagerAdapter.setContext(this);
mViewPager.setAdapter(sectionsPagerAdapter);
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
mTabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
mViewPager.setCurrentItem(startingFragmentPosition);
Run Code Online (Sandbox Code Playgroud)
但是当我运行我的应用程序时.标签存在,但它们是无标题.getPageTitle永远不会调用该方法.我该如何解决?