如何使用视图分页器在android片段选项卡中移动下一页?

阴影

我有两个选项卡:登录和注册片段。我在登录选项卡中单击了注册按钮,当我单击时,它应该移动到注册在LoginActivity中使用此方法的片段

public void setCurrentItem(int item, boolean smoothScroll) {
    mPager.setCurrentItem(item, smoothScroll);
}

我在登录片段中得到了该方法,但显示错误。
我的代码如下:

public class LoginActivity extends SherlockFragmentActivity {

    private ViewPager mPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Get the view from activity_main.xml
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.loginpager);
        PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
        tabs.setIndicatorColor(Color.BLUE);
        tabs.setIndicatorHeight(5);
        mPager = (ViewPager) findViewById(R.id.pager);
        ViewPagerAdapter adapter = new ViewPagerAdapter(fm);
        mPager.setAdapter(adapter);
        tabs.setViewPager(mPager);

    }

    public void setCurrentItem(int item, boolean smoothScroll) {
        mPager.setCurrentItem(item, smoothScroll);
    }

    public class ViewPagerAdapter extends FragmentPagerAdapter {

        public ViewPagerAdapter(android.support.v4.app.FragmentManager fm) {
            super(fm);
        }

        private final String[] TITLES = { "LOG IN", "REGISTER" };

        @Override
        public CharSequence getPageTitle(int position) {
            return TITLES[position];
        }

        @Override
        public SherlockFragment getItem(int arg0) {
            switch (arg0) {
            // Open LoginFragment
            case 0:
                LoginFragment loginfragment = new LoginFragment();
                return loginfragment;

            // Open RegisterFragment
            case 1:
                RegisterFragment registerfragment= new RegisterFragment();
                return registerfragment;

            }
        return null;
        }

        @Override
        public int getCount() {
            return TITLES.length;
        }

    } 
}

LoginFragment:

public class LoginFragment extends SherlockFragment implements OnClickListener {

    private LoginActivity loginActivity;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Get the view from fragmenttab3.xml
        View view = inflater.inflate(R.layout.login, container, false);
        SpannableString spannableString = new SpannableString(text);
        spannableString.setSpan(new ForegroundColorSpan(Color.BLACK), 24, 32, 0);
        ClickableSpan clickableSpan = new SpaceAdjust(text) {
            @Override
            public void onClick(View textView) {
                loginActivity = new LoginActivity();
                loginActivity.setCurrentItem(2, true); // here i am getting error. How to swipe to RegisterFragment
            }
        };
        spannableString.setSpan(clickableSpan, 24, 32, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        dontHaveAccountRegister.setText(spannableString);
        dontHaveAccountRegister.setMovementMethod(LinkMovementMethod.getInstance());
        return view;
    }
}

错误 :

12-12 00:41:53.906: E/AndroidRuntime(1580): FATAL EXCEPTION: main
12-12 00:41:53.906: E/AndroidRuntime(1580): Process: com.a.b, PID: 1580
12-12 00:41:53.906: E/AndroidRuntime(1580): java.lang.NullPointerException
12-12 00:41:53.906: E/AndroidRuntime(1580):     at com.a.b.LoginActivity.setCurrentItem(LoginActivity.java:148)
12-12 00:41:53.906: E/AndroidRuntime(1580):     at com.a.b.views.LoginFragment$5.onClick(LoginFragment.java:250)
12-12 00:41:53.906: E/AndroidRuntime(1580):     at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:217)
12-12 00:41:53.906: E/AndroidRuntime(1580):     at android.widget.TextView.onTouchEvent(TextView.java:7724)
12-12 00:41:53.906: E/AndroidRuntime(1580):     at android.view.View.dispatchTouchEvent(View.java:7690)
12-12 00:41:53.906: E/AndroidRuntime(1580):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
12-12 00:41:53.906: E/AndroidRuntime(1580):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
12-12 00:41:53.906: E/AndroidRuntime(1580):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
甜心ish

您不应该创建Activity的实例来访问其方法。这是Fragment的Parent Activity

因此,您可以通过以下方式直接访问它:

((LoginActivity)getActivity()).setCurrentItem(2, true);

希望对你有帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在打印选项卡中设置“将所有列放在一页上”

使用ASP.NET Webforms在另一页上打开特定选项卡

使用视图分页器在片段中选择的选项卡上重新加载数据

如何设置href以引导导航栏onclick菜单,它应该触发到另一页的选项卡

如何将嵌套的片段添加到选项卡式视图分页器中的Backstack?

如何使分页“下一页”和“上一页”转到表单内的指定href?

分页的下一页链接

通过python使用硒移动到下一页

如何从片段重定向到下一页

Android操作栏选项卡+滑动视图分页器从一个选项卡动态导航到另一个

PagerSlidingTabStrip:如何在运行时刷新当前选项卡中的内部片段Listview并停止为下一个选项卡加载数据

在使用视图分页器实现的选项卡上方添加imageview

在NERDTREE选项卡中移动选项卡

如何在一页上实现两组CSS选项卡?

使用angularjs选项卡时如何在单击按钮时移动到下一个选项卡

如何使用ListView中的OnItemClickListener移至PagerStrip Slidding选项卡中的下一个片段

在Android操作栏选项卡和选项卡侦听器中使用片段时发生ClassCastException

如何在Android中制作下一页按钮(单击以转到下一个片段)

Instagram API分页:下一页

使用锚标记进行一页滚动或在选项卡中使用不利于SEO,如何创建不带“ href =“#”的引导程序选项卡?

如何使用applescript从网页表单窗口中的选项卡中移动?

如何使用 angularjs 变量使超链接移动到下一页?

如何在我的应用程序中使用 Facebook 登录并在成功登录后移动到下一页/视图控制器?

xamarin 表单:如何在单击选项卡时关闭选项卡页面并显示上一页?

使用jQuery在同一页面中的多个选项卡

如何使用选项卡标题从 Android PagerAdapter 返回片段

如何在swiftUI中使用分页选项卡视图时阻止页面上下滚动

从当前选项卡内部移动到下一个选项卡

如何在视图分页器选项卡中切换列表片段和详细信息片段?