2014-03-25 29 views
2

我正在使用查看寻呼机在android中滑动页面,我所有的页面都有按钮,并且我想设置单击按钮上的监听器。我怎样才能做到这一点?我检查了这个链接。 On Click listener is not working in View Pager但它没有为我工作。调用按钮单击视图寻呼机中的监听器android

这里是我的代码:

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

} 

ViewPager

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

任何帮助,将不胜感激。

回答

1

我认为使用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

+0

你救了我的命...... –