【问题标题】:android : change tab and pager with button event in pager slidding tab stripandroid:在寻呼机滑动标签条中使用按钮事件更改标签和寻呼机
【发布时间】:2014-02-22 14:03:22
【问题描述】:

我在我的应用程序中使用寻呼机滑动标签条,我想通过按钮事件更改标签和寻呼机我该怎么做? 我使用此代码,但它不起作用

public class CheckoutMethod_Fragment extends Fragment {

private static final String ARG_POSITION = "position";

private int position;
private Button btn_continue;
ViewPager pager;


public static CheckoutMethod_Fragment newInstance(int position) {
    CheckoutMethod_Fragment f = new CheckoutMethod_Fragment();
    Bundle b = new Bundle();
    b.putInt(ARG_POSITION, position);
    f.setArguments(b);
    return f;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    position = getArguments().getInt(ARG_POSITION); 
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    final View v = inflater.inflate(R.layout.activity_checkout_method__fragment,
            container, false);

    final ViewPager pager = (ViewPager) v.findViewById(R.id.pager);
    pager.setAdapter(new ViewPagerAdapter_PlaceCartOrder(getFragmentManager()));

    btn_continue = (Button) v.findViewById(R.id.button_continue);
    btn_continue.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            // TODO Auto-generated method stub
            //Replace right fragment with another fragment

            pager.setCurrentItem(2);
        }
    });
    return v;
}}

这是 ViewPagerAdapter_PlaceCartOrder

public class ViewPagerAdapter_PlaceCartOrder extends FragmentPagerAdapter {

private final String[] TITLES = { "Checkout Method","bbbb", "aaa ","ggg", "Order Review" };

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

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

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

@Override
public Fragment getItem(int position) {

    switch (position) {

    case 0:
        return CheckoutMethod_Fragment.newInstance(position);
    case 1:
        return CustomerInformation_Fragment.newInstance(position);
    case 2:
        return BillingInformation_Fragment.newInstance(position);
    case 3:
        return ShippingInformation_Fragment.newInstance(position);
    case 4:
        return ShippingMethod_Fragment.newInstance(position);
    case 5:
        return PaymentInformation_Fragment.newInstance(position);
    case 6:
        return OrderReview_Fragment.newInstance(position);
    case 7:
        return CheckoutMethod_Fragment.newInstance(position);
    case 8:
        return CheckoutMethod_Fragment.newInstance(position);
    case 9:
        return CheckoutMethod_Fragment.newInstance(position);
    default:
        return SuperAwesomeCardFragment.newInstance(6000);
    }

    // return SuperAwesomeCardFragment.newInstance(position);
}}

public class PlaceOrderActivity extends FragmentActivity {

ViewPager pager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_place_order);

    Typeface typeface = Typeface.createFromAsset(getAssets(),
            "fonts/Yekan.ttf");

    // Initialize the ViewPager and set an adapter
    pager = (ViewPager) findViewById(R.id.pager);
    pager.setAdapter(new ViewPagerAdapter_PlaceCartOrder(getSupportFragmentManager()));
    //pager.setCurrentItem(7);

    // Bind the tabs to the ViewPager
    PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
    tabs.setViewPager(pager);
    tabs.setIndicatorColor(Color.rgb(225, 19, 18));
    tabs.setIndicatorHeight(3);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    //getMenuInflater().inflate(R.menu.place_order, menu);
    return true;
}

public void ChangeFragment(){
    pager.setCurrentItem(2);
}}

【问题讨论】:

    标签: android android-fragments tabs pagerslidingtabstrip


    【解决方案1】:

    您的代码有 2 个问题:

    1. onCreateView 中的final View v 被作为onClick 方法的参数传递的View v 遮蔽。
    2. 您需要先设置寻呼机,然后才能使用它。目前,您在onClick 方法中进行设置。您需要将寻呼机设置代码移至onCreateView 方法。

    【讨论】:

    • 我将设置代码移动到 onCreateView 但它返回此行的错误:pager.setAdapter(new ViewPagerAdapter(getFragmentManager()));
    • 如何解决第一个问题?\
    • 如果您已将寻呼机设置移动到onCreateView,您可能不需要解决第一个问题。但是,如果您坚持,将参数从 View v 重命名为 View view 就可以解决问题。如果您可以发布新代码,则可能会指出错误。
    • 你得到什么错误?也发布ViewPagerAdapter_PlaceCartOrder 的实现。
    • 我发布 ViewPagerAdapter_PlaceCartOrder
    猜你喜欢
    • 2013-08-04
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多