我正在使用FragmentPagerAdapter和FragmentActivity来创建可滑动的片段.
我在pagerAdapter中的第一个片段看起来像这样.
public class MySummaryFragment extends CommonFragment implements OnPageChangeListener
{
private Context mContext;
private View mMyView;
LinearLayout mDetailLayout;
TextView mDateTxtView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
System.out.println("onCreateView() Market summary");
mMyView = inflater.inflate(R.layout.my_page_summary_fragment_layout, container,false);
mDetailLayout = (LinearLayout)mMyView.findViewById(R.id.SummaryDetailLayout);
mDateTxtView = (TextView) mMyView.findViewById(R.id.txtDate);
Account_Id = AccountDetails.getInstance(mContext).getClientCodes().get(0);
sendRequest(Account_Id);
return mMyView;
}
@Override
public void onPageSelected(int arg0) {
System.out.println("inside onPageScrollStateChanged()");
System.out.println("mMyView is null ? = "+(mMyView==null));
mDateTxtView = (TextView) mMyView.findViewById(R.id.txtMarketSummaryDate);
Account_Id = AccountDetails.getInstance(mContext).getClientCodes().get(0);
mDateTxtView.setText("");
sendRequest(Account_Id);
}
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是当刷出5-6个片段并向后滑动到第一个片段时,我得到NullPointerException.
当我尝试调试时,我发现了
mMyView为空?=真
为什么这样? …
android android-fragments fragmentpageradapter android-fragmentactivity
我在我的应用程序中使用PagerTitleStrip是最新的(Doc:http://developer.android.com/reference/android/support/v4/view/PagerTitleStrip.html)
一切正常,我设置了这样的标题:
public class PageAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public PageAdapter(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();
}
String[] titles = { "1", "2", "3", "4","5" };
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
}
Run Code Online (Sandbox Code Playgroud)
我现在担心的是,一旦第一个Fragment完成加载,我就必须更改条带的标题.
我已经尝试获取FragmentPagerAdapter并尝试操作它,但从未成功更改标题(文本)
确实有一个getPageTitle方法:mPagerAdapter.getPageTitle(position)但没有setPageTitle ...
有什么想法或建议吗?
我正在使用5页的片段寻呼机适配器.并设置适配器以查看寻呼机,如下所示
public class xxx extends FragmentPagerAdapter
{
final int PAGE_COUNT_LOGGED_IN = 6;
final int PAGE_COUNT_LOGGED_OUT = 2;
TextView oTextView = null;
LayoutInflater inflater = null;
PagerTabStrip m_oPageTabStrip = null;
String m_strTab = null;
String[] m_strArray = null;
Context m_oContext = null;
/** Constructor of the class */
public xxxx (Context context, android.support.v4.app.FragmentManager oFragmentManager)
{
super (oFragmentManager);
m_oContext = context;
}
/** This method will be invoked when a page is requested to create */
@Override
public Fragment getItem(int arg0)
{ …Run Code Online (Sandbox Code Playgroud) android adapter android-fragments android-viewpager fragmentpageradapter
我有一个ViewPager设置,它从服务器传递的数据中为其页面(视图)绘制数据.有时,服务器将发送将重新排序视图的新数据(有时会添加新视图),我需要在用户当前查看特定片段时在我的Android设备上无缝地进行此操作.
我将它设置为在从服务器下拉新数据时调用notifyDataSetChanged(),但这似乎将幻灯片的缓存版本保留在当前查看的幻灯片的左侧和右侧,这可能会随着重新排序而改变.我在这里看过这个主题:ViewPager PagerAdapter没有更新View并实现了第一个工作正常的解决方案,除了它重新加载正在查看的当前幻灯片,这对我的目的不起作用.我在第二个答案中实现了在同一页面上提出的setTag()方法,并且可以用于更新幻灯片上的信息,但是它不会帮助我重新排序它们.
有什么方法可以重新排序幕后的所有幻灯片,而不会在当前查看的幻灯片中造成任何打击?
TIA
编辑:添加代码并要求进一步澄清
这是我的Adapter类.
private class ScreenSlidePagerAdapter extends FragmentPagerAdapter {
ContestEntriesModel entries;
public ScreenSlidePagerAdapter(FragmentManager fm, ContestEntriesModel Entries) {
super(fm);
this.entries = Entries;
}
@Override
public long getItemId(int position) {
return entries.entries[position].ContestEntryId;
}
@Override
public int getItemPosition(Object object) {
android.support.v4.app.Fragment f = (android.support.v4.app.Fragment)object;
for(int i = 0; i < getCount(); i++){
android.support.v4.app.Fragment fragment = getItem(i);
if(f.equals(fragment)){
return i;
}
}
return POSITION_NONE;
}
@Override
public android.support.v4.app.Fragment getItem(int position) {
long entryId = getItemId(position);
//Log.d("EntryIds",Integer.toString(entryId));
if(mItems.get(entryId) != …Run Code Online (Sandbox Code Playgroud) android android-viewpager fragmentpageradapter android-pageradapter
我有一个单一的Main-Activity,我在ViewPager中创建动态Pages(通过FragmentPagerAdapter).到现在为止还挺好.
现在我得到了一个服务实现我想要那些活动/那些片段绑定到.这就是我要问自己哪一点是最好的做法.
两种实现似乎都有效.但第二个提供与服务的更直接的沟通.
在测试时,第二个片段必然会在创建时服务.但当我删除除了一个以外的所有东西时,它们似乎并没有被破坏.当我再次开始从那一点创建片段(删除其他片段后只有一个片段)时,只有当我创建比以前创建的片段更多的片段时,才会发生绑定到服务.
也许再次提供更好的概述.
这是人们可以期待的行为吗?这是我应该选择的实施; 回调通信显然更直接的沟通?
感谢您提前输入!
android android-service android-fragments android-viewpager fragmentpageradapter
根据谷歌的文档:
您现在可以将片段嵌入片段中.这对于您希望将动态和可重用UI组件放入自身动态且可重用的UI组件的各种情况都很有用.例如,如果使用ViewPager创建 向左和向右滑动并占用大部分屏幕空间的 片段,则现在可以将片段插入到每个片段页面中.要嵌套片段,只需在要添加片段的片段上调用getChildFragmentManager().这将返回一个FragmentManager,您可以像通常从顶级活动那样使用它来创建片段事务.例如,这里有一些代码可以在现有的Fragment类中添加一个片段:
Fragment videoFragment = new VideoPlayerFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.video_fragment, videoFragment).commit();
Run Code Online (Sandbox Code Playgroud)
所以我创造了自己的PageFragment.而我PageFragmentAdapter的3页PageFragment.我还有6个片段:Fragment1,Fragment2,Fragment3,FragmentA,FragmentB,FragmentC.在我的MainActivity初始化我的六个片段,我ViewPager和它PageFragmentAdapter(它PageFragment自己初始化三个).
然后,我用这个方法来附上我的Fragment1,Fragment2,Fragment3每个页面(每个PageFragment的)PageFragmentAdapter:
PageFragmentAdapter tPageFragmentAdapter = new PageFragmentAdapter(getSupportFragmentManager());
tPageFragmentAdapter.setFirstPage(tFragment1);
tPageFragmentAdapter.setSecondPage(tFragment2);
tPageFragmentAdapter.setThirdPage(tFragment3);
Run Code Online (Sandbox Code Playgroud)
我可以回复(通过方法PageFragmentAdapter)片段并将"嵌套片段"放入我的PageFragment(当然onCreate())中,如:
getChildFragmentManager().beginTransaction()
.add(R.id.framelayout_history, mFragment)
.addToBackStack(null)
.commit();
Run Code Online (Sandbox Code Playgroud)
注意:我用它PageFragment.setNestedFragment() …
android nested android-fragments android-viewpager fragmentpageradapter
目的:为了使用片段参数从一个沿字符串值传递TextView到一个新的片段TextView,但在使用ViewPager具有不同layouts/fragments的FragmentPagerAdapter。
问题:新片段永远不会从前一个片段接收片段参数。
我的设置:我有我的Activity托管ViewPager和FragmentPagerAdapter。我已经重写FragmentPagerAdapters getItem(int position)了fragment根据ViewPager. 现在Fragments我的适配器中只有两个,但在克服这个障碍后会添加更多。我正在使用该newInstance()技术传递Fragment的参数,但没有传递任何内容。
相关代码:
我的 FragmentPagerAdapter 代码:
//this is a variable that I pass in as the newInstanct() methods parameter,
// I update this variable from my fragments constantly
public static String fragmentArgumentsValue = "";
mViewPager.setAdapter(new FragmentPagerAdapter(fm) {
@Override
public int getCount() {
return NUMBER_OF_VIEWS; …Run Code Online (Sandbox Code Playgroud) java android android-fragments android-viewpager fragmentpageradapter
我使用FragmentPagerAdapter从片段切换.我需要在制作片段开关时调用一些函数,并且在OnPause和OnResume上遇到一些麻烦,所以这个问题的建议我实现了一个接口OnPageSelectListener:
public interface OnPageSelectListener {
void onPageSelected();
void onPageNotVisible();
}
Run Code Online (Sandbox Code Playgroud)
只要此页面到达前台,它就会调用OnPageSelected函数.工作得很好,除了我想在我的适配器上调用一个函数.我认为这样可行,除了我的适配器一直返回NULL(即使它被初始化并且数据在我的列表视图中被加载为首选).
public class AfterCheckFragment extends Fragment implements OnPageSelectListener{
private ListView listView;
private List<Check> checkList;
private CheckListAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_check, container, false);
System.out.println("VIEW create called");
//(.. some other stuff, not relevant for question..)
//initializing the adapter
listView = (ListView) view.findViewById(R.id.listView);
adapter = new CheckListAdapter(checkList,getActivity(),trainPosition);
listView.setAdapter(adapter);
adapter.handleButtonVisibility();
return view;
}
@Override …Run Code Online (Sandbox Code Playgroud) android oncreate android-fragments android-viewpager fragmentpageradapter
我想为ViewPagerAndroid 创建一个滑动应用程序.当我运行下面的代码时,它会成功运行并Fragment打开蓝色,但是滑动不起作用.你能告诉我为什么吗?
这是我的Activity:
package app.learn.com.learnapp;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.os.Bundle;
import java.util.List;
import java.util.Vector;
import menulistFrag.blueColor;
import menulistFrag.greenColor;
import menulistFrag.redColor;
public class MenuActivityList1 extends FragmentActivity {
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu_activity_list1);
viewPager = (ViewPager)findViewById(R.id.pager);
instantiateFrags();
}
public void instantiateFrags(){
List<Fragment> frags = new Vector<Fragment>();
frags.add(Fragment.instantiate(this, redColor.class.getName()));
frags.add(Fragment.instantiate(this, greenColor.class.getName()));
frags.add(Fragment.instantiate(this, blueColor.class.getName()));
PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager(),frags);
viewPager.setAdapter(pagerAdapter);
viewPager.setCurrentItem(0);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的PagerAdapter:
package app.learn.com.learnapp;
import android.support.v4.app.Fragment; …Run Code Online (Sandbox Code Playgroud) android swipe android-fragments android-viewpager fragmentpageradapter
我在iOS App Storyboard中创建了一个Container View.我想在UICollectionView的一个单元格中水平翻页(就像Android的FragmentPager一样).但是,如果您在UICollectionViewCell中放入容器视图,则会发生错误:
故事板:错误:非法配置:容器视图不能放在运行时重复的元素中
ios fragmentpageradapter container-view uicollectionview uicollectionviewcell