查看寻呼机Android

时间:2014-11-11 11:18:44

标签: java android android-viewpager

我尝试从http://developer.android.com/training/animation/screen-slide.html

实施View Pager

但是在创建页码时我似乎遇到了问题。从前面提到的网站调试下载的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;
        }
    }

}

1 个答案:

答案 0 :(得分:0)

喜欢这个

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    
   }
});

`