我用 viewpager 解决了 onclicklistsner 问题,但现在我注意到它取决于 XML 布局文件中的所有元素。
我用那个教程实现了一个 ViewPager:tutsplus
现在我遇到了问题,我在 XML 中定义的所有对象都正确实例化(在 findViewById 等之后的 Debuggin 模式下不为空),但我无法引用它们。为了更好地理解它,我的 PagerAdapter:
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.settings_view;
break;
case 1:
resId = R.layout.push_view;
break;
case 2:
resId = R.layout.listen_view;
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;
}
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
这里是我的适配器实现和一些示例代码:
ViewPager myPager = (ViewPager)findViewById(R.id.pager);
adapter = new MyPagerAdapter();
myPager.setAdapter(adapter);
myPager.setCurrentItem(0);
Spinner spinner = (Spinner)listenView.findViewById(R.id.Dashboard_chooser); 按钮推送 = (Button)pushview.findViewById(R.id.pushbutton);
ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(getApplicationContext(),android.R.layout.simple_spinner_item, si);
spinner.setAdapter(spinnerArrayAdapter);
push.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//do something
});
Button 和 Spinner 都没有做任何事情。它们都被正确实例化,但我无法单击按钮,也无法让 Spinner 填充 SpinnerItems 数组。
在 Debu 模式下,我查看了它们两个都被实例化, SpinnerItemArray (si) 得到它的值等等。
顺便说一句,在我实现 ViewPager 之前所有的东西都工作了,当在 XML 中设置 android:onClick 然后在代码中定义方法时按钮也工作,但这对 Spinner 不起作用,所以我认为它必须instanceiteItem 方法或类似方法有问题。
这里有人知道问题吗?如果有人可以提供帮助,那就太酷了。你的弗洛