簡體   English   中英

查看Pager Android

[英]View Pager Android

我正在嘗試從以下網站實現“查看尋呼機”: http : //developer.android.com/training/animation/screen-slide.html

但是在創建頁碼時,我似乎遇到了問題。 從前面提到的網站調試下載的zip時,第一個調用的方法是create(int pageNumber),然后是onCreate(),您將從中獲取頁碼。 就我而言,這是另一回事,因此我得到了一個空指針異常。

這是我當前對View Pager的實現:

public class SingleCheckInDisplay extends android.support.v4.app.Fragment {
    private Checkin data;
    private FragmentManager fragmentManager;

    private List<CheckinUser> enlooped;
    private TextView checkInLocation;
    private TextView checkInDescription;
    private TextView checkInTime;
    private Button cancelBtn;
    private ImageButton singleCheckInEnloopBtn;
    private ImageButton singleCheckInCancelBtn;
    private HorizontalListView enloopedFriends;
    public static final String ARG_PAGE = "page";
    private int mPageNumber;


    public static SingleCheckInDisplay create(int pageNumber) {
        SingleCheckInDisplay fragment = new SingleCheckInDisplay();
        Bundle args = new Bundle();
        args.putInt(ARG_PAGE, pageNumber);
        fragment.setArguments(args);
        return fragment;
    }

    public SingleCheckInDisplay(Checkin data) {
        this.data = data;
    }

    public SingleCheckInDisplay() {
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mPageNumber = 2;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_single_check_in_display, container, false);
        enlooped = data.getCheckinUsers();

        fragmentManager = getActivity().getSupportFragmentManager();

        ImageView main_pic = (ImageView) v.findViewById(R.id.main_pic);
        checkInLocation = (TextView) v.findViewById(R.id.single_check_in_location);
        checkInDescription = (TextView) v.findViewById(R.id.single_check_in_desc);
        checkInTime = (TextView) v.findViewById(R.id.single_check_in_time_text);
        checkInTime.setText(data.getCheckinDate().toString());
        enloopedFriends = (HorizontalListView) v.findViewById(R.id.sinlge_check_in_enlooped_list);

        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.drawable.sm_profile)
                .showImageForEmptyUri(R.drawable.sm_profile)
                .showImageOnFail(R.drawable.sm_profile)
                .cacheOnDisk(true)
                .cacheInMemory(true)
                .imageScaleType(ImageScaleType.EXACTLY)
                .considerExifParams(true)
                .displayer(new SimpleBitmapDisplayer())
                .build();
        ImageLoader.getInstance().displayImage(data.getImages(), main_pic, options);

        checkInDescription.setText(data.getDescription());
        checkInLocation.setText(data.getPlaceAddressAndName());
        checkInLocation.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // Set a bundle with place ID, the rest will be obtained by calling Graph API
                Bundle args = new Bundle();
                args.putString("placeID", data.getPlaceId());

                SingleCheckInPlace scp = new SingleCheckInPlace();
                scp.setArguments(args);
                FragmentManager fm = getActivity().getSupportFragmentManager();
                fm.beginTransaction().replace(R.id.container, scp).addToBackStack(null).commit();
            }
        });

        SingleCheckInAdapter adapter = new SingleCheckInAdapter(getActivity(), enlooped);
        enloopedFriends.setAdapter(adapter);

        cancelBtn = (Button) v.findViewById(R.id.single_ck_display_cancel_button);
        cancelBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MapsFilterFragment firstFragment = new MapsFilterFragment();
                fragmentManager.beginTransaction().add(R.id.container, firstFragment).commit();
            }
        });

        singleCheckInEnloopBtn = (ImageButton) v.findViewById(R.id.single_check_in_enloop_btn);
        singleCheckInEnloopBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(), "Enlooped !", Toast.LENGTH_SHORT).show();
                fragmentManager.popBackStack();
            }
        });

        singleCheckInCancelBtn = (ImageButton) v.findViewById(R.id.single_check_in_no_btn);
        singleCheckInCancelBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(), "Maybe next time", Toast.LENGTH_SHORT).show();
                goBack();
            }
        });
        return v;
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
    }

    @Override
    public void onDetach() {
        super.onDetach();
    }

    private void goBack() {
        fragmentManager.popBackStack();
    }

    public int getPageNumber() {
        return mPageNumber;
    }
}

這是尋呼機本身的功能:

public class ScreenSlideFragment extends android.support.v4.app.Fragment {

    private ViewPager mPager;
    private PagerAdapter mPagerAdapter;
    private static final int NUM_PAGES = 11;

    public ScreenSlideFragment() {
        // Required empty public constructor
    }

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

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_screen_slide, container, false);

        mPager = (ViewPager) view.findViewById(R.id.pager);
        mPagerAdapter = new ScreenSlidePagerAdapter(getFragmentManager());
        mPager.setAdapter(mPagerAdapter);

        return view;
    }

    private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
        public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) {
            super(fm);
        }

        @Override
        public android.support.v4.app.Fragment getItem(int position) {
            return SingleCheckInDisplay.create(position);
        }

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

}

像這樣

ViewPager mviewPager=(ViewPage)findViewById(R.id.urcontainer);
mviewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override 
    public void OnPageSelected(int position) {
      int page_number=position; //this will give u the current page number    
   }
});

`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM