我知道默认情况下PagerAdapter只加载当前页面,下一页面和上一页面.有没有办法改变它,所以它会加载每一页?谢谢!
我正在玩设计支持库TabLayout.我的问题是其中一个标签的标题太长,因此,它是在2行而不是1上绘制的.我想知道是否有一种方法可以缩放标题文本大小以确保所有标题都在1行上绘制.
这是一个截图,以更好地解释我的问题:
如果细节很重要,我正在使用Design Support TabLayout,一个ViewPager和一个FragmentPagerAdapter来填充我的标签.
提前致谢!
android fragmentpageradapter androiddesignsupport android-tablayout
我的活动使用TabLayout+ ViewPager.
此处的选项卡和页面数量是动态的,具体取决于从服务器获取的数据.
崩溃是通过Crashlytics报道的,我无法复制它.
我的活动代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
boolean isAppRestarting = PrefUtils.getBoolean("app_restarting", false);
if (isAppRestarting) {
super.onCreate(null);
this.savedInstanceState = null;
} else {
super.onCreate(savedInstanceState);
this.savedInstanceState = savedInstanceState;
}
initSlidingTabs();
fetchSomeData(); // see onDataFetched() below
}
private void initSlidingTabs() {
List<FragmentWithTitle> sdsTabs = new ArrayList<>();
Logger.i("There is saved instance state");
ArrayList<String> titles = savedInstanceState.getStringArrayList(TAB_TITLES);
if (titles != null) {
for (int i = 0; i < titles.size(); i++) {
if (getFragment(i) != null) {
sdsTabs.add(new …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager fragmentpageradapter android-tablayout
我正在实现新的嵌套片段功能,并遇到了问题.我的观点基本上是这样的:包含片段(B)的主要活动(A),该片段(B)包括具有3个页面的寻呼机适配器,每个页面也是片段(C).以前到新的getchildfragmentmanger这是不可行的,但它完美无缺.但确实出现了一个问题,我希望片段C能够参与填充选项菜单.我厌倦了在我的每个C片段上的onActivityCreated方法中设置setHasOptionsMenu(true)并覆盖onCreateOptionsMenu但没有任何反应...如果我尝试从片段B填充菜单(这是寻呼机适配器的容器)我可以更改菜单项......
有什么想法吗 ?
谢谢.
我想在我的应用程序中仅实现2个固定选项卡.我按照本教程.
在我的TabPagerAdapter班上,我收到了这个错误:
FragmentPageAdapter在android.support.v4.app.FragmentPagerAdapter无法应用android.app.FragmentManager
TabPageAdapter类:
package com.nikhil.tabs;
import android.app.Fragment;
import android.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
public class TabsPagerAdapter extends FragmentPagerAdapter {
public TabsPagerAdapter(FragmentManager fm) {
super(fm); //getting error here
}
@Override
public Fragment getItem(int index) { //getting error here
switch (index) {
case 0:
// Top Rated fragment activity
return new TopRatedFragment();
case 1:
// Games fragment activity
return new GamesFragment();
}
return null;
}
@Override
public int getCount() {
// get item count - …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,片段活动包含两个片段,片段A和片段B.片段B是包含3个片段的视图寻呼机.

在我的活动中,为了防止在配置更改时重新创建片段:
if(getSupportFragmentManager().findFragmentByTag(MAIN_TAB_FRAGMENT) == null) {
getSupportFragmentManager().beginTransaction().replace(R.id.container, new MainTabFragment(), MAIN_TAB_FRAGMENT).commit();
}
Run Code Online (Sandbox Code Playgroud)
片段B的代码:
public class MainTabFragment extends Fragment {
private PagerSlidingTabStrip mSlidingTabLayout;
private LfPagerAdapter adapter;
private ViewPager mViewPager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_tab, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
this.adapter = new LfPagerAdapter(getChildFragmentManager());
this.mViewPager = (ViewPager) view.findViewById(R.id.viewpager);
this.mViewPager.setAdapter(adapter);
this.mSlidingTabLayout = (PagerSlidingTabStrip) view.findViewById(R.id.sliding_tabs);
this.mSlidingTabLayout.setViewPager(this.mViewPager);
}
}
Run Code Online (Sandbox Code Playgroud)
适配器代码:
public class LfPagerAdapter …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
我是一个机器人初学者,试图学习,这是我的第一个问题,所以请原谅我,如果问题太简单,请告诉我,如果我正在使用论坛不正确.
我有一个FragmentActivity使用包含viewpager的布局; 该活动创建一个MyFragmentPagerAdapter实例,它创建了几个MyFragment实例.所有都是support.v4版本.
我试图找到一种方法来传递一个整数值(表示用户之前做出的选择,实际上可能是一个可绘制的id)到片段.我正在使用一个意图将它传递给这个活动,我知道我可以使用bundle将FragmentPagerAdapter中的值传递给片段,但我找不到从活动到FragmentPagerAdapter的方法.我尝试了几种方法,包括更改构造函数但无法使其工作.
我错过了一些简单的事吗?做这个的最好方式是什么?
public class SecondActivity extends FragmentActivity {
private MyIntegerAdapter1 mAdapter1;
private ViewPager mPager1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
mAdapter1 = new MyIntegerAdapter1(getSupportFragmentManager());
mPager1 = (ViewPager) findViewById(R.id.pager1);
mPager1.setAdapter(mAdapter1);
Run Code Online (Sandbox Code Playgroud)
public class MyIntegerAdapter1 extends FragmentPagerAdapter {
public MyIntegerAdapter1(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
Fragment f1 = new IntegerFragment();
Bundle args1 = new Bundle();
args1.putInt("param", R.drawable.image1);
args1.putInt("number", 1);
f1.setArguments(args1);
return f1;
etc
Run Code Online (Sandbox Code Playgroud)
public class …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager fragmentpageradapter
我在此活动中收到IllegalStateException但不太确定发生了什么.这是QuickContactActivity中的ViewPagerAdapter类.
private class ViewPagerAdapter extends FragmentPagerAdapter {
public ViewPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public Fragment getItem(int position) {
QuickContactListFragment fragment = new QuickContactListFragment();
final String mimeType = mSortedActionMimeTypes.get(position);
final List<Action> actions = mActions.get(mimeType);
fragment.setActions(actions);
return fragment;
}
@Override
public int getCount() {
return mSortedActionMimeTypes.size();
}
}
Run Code Online (Sandbox Code Playgroud)
这是崩溃日志:
07-15 09:49:21.060: E/com.##.##.##.Application(12378): Thread uncaught exception:
07-15 09:49:21.060: E/com.##.##.##.Application(12378): java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 0, found: 1 Pager id: com.##.##.android:id/item_list_pager Pager class: …Run Code Online (Sandbox Code Playgroud) android illegalstateexception fragmentpageradapter android-pageradapter
我有一个包含更多的FragmentMyFragment vith .它在我第一次加载MyFragment时正常工作,但是如果我返回并重新创建它,则不显示in 中,因为该方法未被调用.ViewPagerFragmentFragmentsViewPagerFragmentPagerAdapter.getItem
我正在使用
怎么了?
import android.app.Fragment;
import android.app.FragmentManager;
import android.support.v13.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
...
public class MyFragment extends Fragment {
private ViewPager pager;
private MyPagerAdapter adapter;
private List<Fragment> fragmentList = new ArrayList<Fragment>();
public MyFragment() {}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.my_fragment_layout, container, false);
}
public void onViewCreated(View v, Bundle savedInstanceState) {
super.onViewCreated(v, savedInstanceState);
indicators = (PagerSlidingIndicator) v.findViewById(R.id.indicators);
pager = (ViewPager) v.findViewById(R.id.pager);
Fragment fragment1 = new Fragment1(); …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager fragmentpageradapter