相关疑难解决方法(0)

使用ViewPager的Android.app Fragments与android.support.v4.app?

我有一个关于Android支持库,片段的问题,并且作为一个具体的例子,ViewPager该类.我的目的是创建一个与Android Developer网站上提供的示例功能类似的应用程序(http://developer.android.com/training/animation/screen-slide.htmlhttp://developer.android.com/ training/implementation-navigation/lateral.html).查看他们的代码,我注意到他们使用了android.support.v4.app库,我的研究是访问ViewPager该类的唯一方法.

在我的情况下,我对向后兼容性没兴趣.最低API级别为14(Ice Cream Sandwich),构建目标为4.2 Jelly Bean.在它最简单的形式中,我的应用程序与我在Android开发网站上链接的第二个演示完全一样 - 只需在三个选项卡之间滑动,每个选项卡中包含内容.

我读过的所有文章/帖子/答案似乎都非常支持v4支持库.现在,对于我,尽管是冗长的问题:

  1. 构建我的应用程序的最佳方法是什么 - 使用android.support.v4.app,从而使用SupportFragments,或使用提供的片段android.app- 以及为什么?

  2. 如果碎片来自android.app何方,最佳接近方式是ViewPagers什么?

  3. 如果SupportFragments最适合这项任务,我估计它们具有与另一项相同的功能 - 那么在内部拥有它们的目的是什么android.app

希望有更清楚理解的人可以给我一些澄清,因为我很难过......

android android-fragments android-viewpager android-support-library

182
推荐指数
1
解决办法
6万
查看次数

作为ViewPager的一部分更新ListFragment中的数据

我正在使用Android中的v4兼容性ViewPager.我的FragmentActivity有一堆数据,可以在我的ViewPager中的不同页面上以不同的方式显示.到目前为止,我只有3个相同的ListFragment实例,但将来我将有3个不同的ListFragments实例.ViewPager位于垂直电话屏幕上,列表不是并排的.

现在,ListFragment上的一个按钮启动一个单独的整页活动(通过FragmentActivity),它返回并且FragmentActivity修改数据,保存数据,然后尝试更新其ViewPager中的所有视图.就在这里,我被卡住了.

public class ProgressMainActivity extends FragmentActivity
{
    MyAdapter mAdapter;
    ViewPager mPager;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    ...
        mAdapter = new MyAdapter(getSupportFragmentManager());

        mPager = (ViewPager) findViewById(R.id.viewpager);
        mPager.setAdapter(mAdapter);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        ...
        updateFragments();
        ...
    }
    public void updateFragments()
    {
        //Attempt 1:
        //mAdapter.notifyDataSetChanged();
        //mPager.setAdapter(mAdapter);

        //Attempt 2:
        //HomeListFragment fragment = (HomeListFragment) getSupportFragmentManager().findFragmentById(mAdapter.fragId[0]);
        //fragment.updateDisplay();
    }

    public static class MyAdapter extends FragmentPagerAdapter implements
         TitleProvider
    {
      int[] fragId = {0,0,0,0,0};
      public MyAdapter(FragmentManager fm)
      {
         super(fm);
      }
      @Override …
Run Code Online (Sandbox Code Playgroud)

android android-adapter android-fragments android-viewpager android-listfragment

141
推荐指数
5
解决办法
7万
查看次数

Android Viewpager作为图像幻灯片库

我正在使用Jake的ViewPageIndicator,并希望像滑动图库一样显示图像.我可以开始的任何推荐链接.我已经实现了基本的viewpager,现在想要实现图像视图,如下所示

在此输入图像描述

是否可以使用ViewPageIndicator实现?

android android-viewpager actionbarsherlock

59
推荐指数
3
解决办法
16万
查看次数

在ViewPager中将一个片段替换为另一个片段

当我尝试用一​​个替换Fragment另一个时,我遇到了一些问题ViewPager.

现在的情况

我有ViewPager3页,每一页都是Fragment.在第一页中,我有一个ListView内部ListFragment("FacturasFragment").当我点击该列表中的某个项目时,我使用onListItemClick方法来处理该事件.

我想要的是

  • 单击列表项时,我想替换ListFragment(包含发票列表)与另一个Fragment("DetallesFacturaFragment",包含发票的详细信息).
  • 当我在"DetallesFacturaFragment"并按回来时Button,应该返回ListFragment.
  • 页面之间的滚动不应Fragment在第一个中显示.如果我在第一页上有"DetallesFacturaFragment"并滚动到第二页,当返回第一页时应继续显示"DetallesFacturaFragment".

FragmentActivity

public class TabsFacturasActivity extends SherlockFragmentActivity {

    private MyAdapter mAdapter;
    private ViewPager mPager;
    private PageIndicator mIndicator;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_pager);
        mAdapter = new MyAdapter(getSupportFragmentManager());

        mPager = (ViewPager)findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);

        mIndicator = (TitlePageIndicator)findViewById(R.id.indicator);
        mIndicator.setViewPager(mPager);
    }

    private static class MyAdapter extends FragmentPagerAdapter {

        private String[] titles = …
Run Code Online (Sandbox Code Playgroud)

android listview android-fragments android-viewpager

53
推荐指数
1
解决办法
5万
查看次数

片段:未知的动画名称objectanimator

我正试图在两个片段之间进行翻转卡片动画,例如 - > 显示卡片翻转动画,方法是:

private void switchFragment(Fragment fragment) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager
                .beginTransaction();

        if ((fragment != null) && !(fragment.equals(currentFragment))) {

            if (transactionByMenu) {
                fragmentTransaction.setCustomAnimations(android.R.anim.fade_in,
                        android.R.anim.fade_out);
            } else {
                fragmentTransaction.setCustomAnimations(
                        R.animator.card_flip_right_in,
                        R.animator.card_flip_right_out);
            }

            Fragment nextFragment = fragment;
            fragmentTransaction.hide(currentFragment);
            fragmentTransaction.show(nextFragment);

            currentFragment = nextFragment;
        }
        fragmentTransaction.commit();
    }
Run Code Online (Sandbox Code Playgroud)

交易if(transactionByMenu){...}有效,但没有else{...}

我检查我的库和东西,我目前的目标高于api 11但我仍然有这个错误消息:

05-22 11:32:34.706: E/AndroidRuntime(6801): FATAL EXCEPTION: main
05-22 11:32:34.706: E/AndroidRuntime(6801): java.lang.RuntimeException: Unknown animation name: objectAnimator
05-22 11:32:34.706: E/AndroidRuntime(6801):     at android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.java:124)
05-22 11:32:34.706: E/AndroidRuntime(6801): …
Run Code Online (Sandbox Code Playgroud)

animation android android-fragments objectanimator

30
推荐指数
2
解决办法
3万
查看次数

将片段替换为ViewPager中的另一个片段

我正在使用ViewPager和FragmentPagerAdapter来托管三个不同的片段

[Fragment1][Fragment2][Fragment3]
Run Code Online (Sandbox Code Playgroud)

我想要实现的是如果特定任务成功,用一个全新的片段Fragment4成功替换Fragment1.

我用的时候..

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.fragment1_layout_id, fragment4);
transaction.commit();
Run Code Online (Sandbox Code Playgroud)

..片段被精美地替换,片段4被显示而不是片段1.虽然只要我一直滑到Fragment3然后再回到Fragment4,Fragment1就会卷土重来.

然后,如果我使用..

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.remove(fragment1);
transaction.commit();
Run Code Online (Sandbox Code Playgroud)

..Fragment1被删除,当我回来时Fragment4就在那里.所以这个解决方案的问题是我找不到立即显示Fragment4的方法,因为Fragment1被删除了,即使我尝试过:

transaction.add(fragment4);
transaction.show(fragment4);
Run Code Online (Sandbox Code Playgroud)

这就是我的FragmentPagerAdapter实现目前的样子,没有任何事务管理:

public static class PagerAdapter extends FragmentPagerAdapter {

    public PagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return VIEW_COUNT;
    }

    @Override
    public Fragment getItem(int position) {

        Fragment fragment = null;

        switch (position) {
        case 0:
            fragment = Fragment1.newInstance(context_);
            break;

        case 1:
            fragment = Fragment2.newInstance(context_);
            break;

        case …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager

23
推荐指数
1
解决办法
4万
查看次数

嵌套片段和后栈

Back Stack是否支持与Android中嵌套片段的交互?

如果是的话,我做错了什么?在我的实现中,后退按钮完全忽略了我将此事务添加到后台堆栈的事实.我希望它不是因为嵌套片段的问题,而是我做错了什么.

以下代码位于我的一个片段中,用于将新片段与当前显示的任何嵌套片段交换:

     MyFragment fragment = new MyFragment();
     FragmentTransaction ft = getChildFragmentManager().beginTransaction();
     ft.setCustomAnimations(R.animator.slide_in_from_right, R.animator.slide_out_left, R.animator.slide_in_from_left, R.animator.slide_out_right);
     ft.addToBackStack(null);
     ft.replace(R.id.myFragmentHolder, fragment);
     ft.commit();
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-nested-fragment

18
推荐指数
1
解决办法
2万
查看次数

如何使用PagerAdapter替换ViewPager中的Fragment?

我的问题

我用a ViewPager来显示一个片段FragmentActivity.ViewPager从附件中获取片段FragmentPagerAdapter.

mViewPager = (ViewPager) findViewById(R.id.view_pager);       
mAdapter = new HomePagerAdapter(getSupportFragmentManager());    
mViewPager.setAdapter(mAdapter);
Run Code Online (Sandbox Code Playgroud)

假设ViewPager有3个片段来显示:Fragment1,Fragment2,Fragment3.Fragment1是网格片段并显示网格.Fragment2Fragment3有自己的内容来展示.当使用在屏幕上滑动时,ViewPager将显示下一个片段 - Fragment2.等等.

我想要的是?

我想要的是,当Fragment1点击网格中的一个项目(由...显示)时,Fragment1应该完全替换为其他一些片段,比如说Fragment4(这是不同的片段,连接的适配器不会返回).用户将Fragment4ButtonBack点击之后(仅按钮旁边Fragment4)工作,Fragment1并且应该再次显示网格.同时ViewPager应该表现相同,即在滑动时,Fragment2将显示下一个片段(在我们的例子中).

所以我只想获得与示例相同的行为:http: //developer.android.com/training/basics/fragments/fragment-ui.html#Replace

我的问题

那么,这有可能实现吗?如果是,那该怎么办?我非常感谢你的帮助.亚历克斯.PS抱歉我的英文:)

android replace android-fragments android-viewpager fragmentpageradapter

9
推荐指数
2
解决办法
9170
查看次数

使用视图寻呼机重新加载片段中选定的选项卡上的数据

我在视图页面中有我的片段,但是我想在所选的选项卡上重新加载数据.我尝试在我PositionNoneGetItemPosition方法中返回FragmentPagerAdapter但是它不起作用.

我尝试添加notifyDataSetChanged();选项卡,但它会抛出nullpointer异常.我甚至尝试设置viewPager.setOffscreenPageLimit 我设法找到链接: 在ViewPager中替换Fragment 但它在java上.我已设法将大部分代码转换为c#,但却被卡在评论代码上.我不知道如何调用监听器并同时实例化该类?有很多类似的问题但不幸的是在Xamarin Android中没有一个.

我需要在xamarin android中执行此操作.任何帮助将不胜感激.

这是我的FragmentAdapter

public class TabsFragmentPagerAdapter : FragmentPagerAdapter
{
    private readonly Android.Support.V4.App.Fragment[] fragments;
    static readonly int NUM_ITEMS = 2;
    private readonly Android.Support.V4.App.FragmentManager FragmentManager;
    private Android.Support.V4.App.Fragment mFragmentAtPos0;
    private readonly ICharSequence[] titles;

    public TabsFragmentPagerAdapter(Android.Support.V4.App.FragmentManager fm, Android.Support.V4.App.Fragment[] fragments, ICharSequence[] titles) : base(fm)
    {
        this.fragments = fragments;
        this.titles = titles;

    }
    public override int Count
    {
        get
        {
            return fragments.Length;
        }
    }

    public override int GetItemPosition(Java.Lang.Object objectValue)
    {
        if …
Run Code Online (Sandbox Code Playgroud)

c# android android-fragments xamarin

9
推荐指数
1
解决办法
1564
查看次数

Android - 在ViewPager中替换片段时的Backstack

我正在创建具有三个视图的ViewPager.在第一个视图是ListView,其中onItemClick用其中的WebView替换该片段的新片段.我有两个问题:添加'transaction.addToBackStack(null)'或'transaction.setCustomAnimations(...)'片段与WebView停止显示.没有这些线显示,但我不能按BACK按钮返回列表.

我正在基于该教程这个问题创建代码.在那个问题中,使用了PagerAdapter,我正在使用FragmentPagerAdapter.此外,我不需要更换更多碎片.它只能是一次(从列表到webView和返回).

这是我的适配器代码:

public Fragment getItem( int position )
{
    Fragment fragment = null;
    switch ( position )
    {
        case 0: // news
            if ( mFragmentAtPos0 == null )
            {
                mFragmentAtPos0 = new NewsListFragment( new FirstPageFragmentListener()
                {
                    @Override
                    public void onSwitchToNewsFragment( String url, ViewGroup container )
                    {
                        FragmentTransaction transaction = fm.beginTransaction();
                        transaction.setCustomAnimations( R.anim.rotate_in, R.anim.rotate_out, R.anim.rotate_in, R.anim.rotate_out );

                        WebViewFragment wv = new WebViewFragment( url, context );
                        transaction.replace( container.getId(), wv );
                        transaction.commit();

                        mFragmentAtPos0 = wv;
                        notifyDataSetChanged();
                    }
                } …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager

6
推荐指数
1
解决办法
9371
查看次数