Я реализую приложение, которое использует горизонтальное разбиение по страницам (влево или вправо - горизонтальное представление пейджинга). Я загрузил «android.support.v4.view.ViewPager» и нашел способ реализации части смахивания в основном благодаря этому руководству здесь: http://mobile.tutsplus.com/tutorials/android/android-пользовательскийинтерфейс-дизайн-горизонтальный-просмотр-пейджинга/
Моя проблема заключается в том, чтобы просматривать кнопки и устанавливать OnClickListenr в моих просмотрах. Что странно, так это то, что, хотя я могу сделать это в рамках своей основной деятельности, происходит сбой, когда я пытаюсь сделать это из другой активности, которая запущена и выведена на передний план.
Пока код:
public void Settings(){
setContentView(R.layout.settings);
SettingsAdapter adapter = new SettingsAdapter();
ViewPager myPager = (ViewPager) findViewById(R.id.settingspager);
myPager.setAdapter(adapter);
myPager.setCurrentItem(0);
View BackButton = findViewById(R.id.back);
BackButton.setOnClickListener(this);
}
В моем основном действии работает нормально, точно такие же строки вылетают в BackButton.setOnClickListener при использовании в другом действии.
Из журнала я получаю:
02-20 09:59:50.756: E/AndroidRuntime(489): at lil.kayak.tabs.Settings$SettingsAdapter.instantiateItem(Settings.java:88)
02-20 09:59:50.756: E/AndroidRuntime(489): at android.support.v4.view.PagerAdapter.instantiateItem(PagerAdapter.java:110)
02-20 09:59:50.756: E/AndroidRuntime(489): at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:649)
02-20 09:59:50.756: E/AndroidRuntime(489): at android.support.v4.view.ViewPager.populate(ViewPager.java:783)
02-20 09:59:50.756: E/AndroidRuntime(489): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1016)
Мой пейджер-адаптер в обоих случаях:
private class SettingsAdapter extends PagerAdapter {
public int getCount() {
return 2;
}
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.settings1;
break;
case 1:
resId = R.layout.settings2;
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;
}
}
settings.xml это
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<android.support.v4.view.ViewPager
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/settingspager"/>
</LinearLayout>
Так в чем проблема? И что я должен сделать, чтобы заставить его работать? Заранее спасибо!
Изменить: в настоящее время я работал над этим, используя android:onClick="Function" в моем xml, а затем
общественная недействительная функция (представление v) {}
в моем классе
Теперь это работает, но я не думаю, что это оптимально, поэтому любые предложения приветствуются!