在View Pager android中调用一个Button Click Listener



我在android中使用滑动页面的视图页,我所有的页面都有按钮,我想在按钮上设置点击侦听器。我该怎么做呢?我检查了这个链接。On Click listener在View page中不工作,但它不适合我。

下面是我的代码:

Main.class

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MyPagerAdapter adapter = new MyPagerAdapter();
        ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager);
        myPager.setAdapter(adapter);
        myPager.setCurrentItem(2);
        Button btnDone = (Button) findViewById(R.id.buttonalpha);
        btnDone.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Toast.makeText(getApplicationContext(), "clicked", Toast.LENGTH_SHORT).show();

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

: viewpage

public class MyPagerAdapter extends PagerAdapter {
        public int getCount() {
            return 3;
        }
        public Object instantiateItem(View collection, int position) {

            LayoutInflater inflater = (LayoutInflater) collection.getContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            int resId = 0;
            switch (position) {
            case 0:
                resId = R.layout.hello;
                break;
            case 1:
                resId = R.layout.hello2;
                break;
            case 2:
                resId = R.layout.hello3;
                break;
            /*case 3:
                resId = R.layout.right;
                break;
            case 4:
                resId = R.layout.farright;
                break;*/
            }
            View view = inflater.inflate(resId, null);
            ((ViewPager) collection).addView(view, 0);
            return view;
        }
        @Override
        public void destroyItem(View arg0, int arg1, Object arg2) {
            ((ViewPager) arg0).removeView((View) arg2);
        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0 == ((View) arg1);
        }
        @Override
        public Parcelable saveState() {
            return null;
        }
}

任何帮助都会很感激。

我认为使用FragmentPagerAdapter会更好。

片段示例。

public class YourFragment extends Fragment {
private OnClickListener mListener;

public static YourFragment newInstance(int layoutId){
    Bundle args = new Bundle();
    args.putInt("id", layoutId);
    YourFragment fr = new YourFragment();
    fr.setArguments(args);
    return fr;
}

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    mListener = (OnClickListener)activity;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(getArguments().getInt("id"), container, false);
    view.findViewById(R.id.action_bar).setOnClickListener(mListener);

    return view;
}
}

mainActivity应该实现OnClickListener。

看http://developer.android.com/guide/components/fragments.html CommunicatingWithActivity

最新更新