ViewPager не обновляется правильно / OnClickListener не реагирует - PullRequest
1 голос
/ 13 января 2012

) Я реализовал ViewPager в своем приложении и, кажется, работает хорошо, я использую 3 XML-файла для представлений. в "settings_view" есть два EditText и одна кнопка. Кнопка инстанцирует правильно, потому что в режиме отладки я вижу, что она не нулевая, но когда я нажимаю, ничего не происходит. Чтобы лучше это понять, вот выдержка из кода:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

LayoutInflater getView = getLayoutInflater();

        View pushview = getView.inflate(R.layout.push_view,null);      
        View listenView =getView.inflate(R.layout.listen_view, null);
        View settingsView = getView.inflate(R.layout.settings_view, null);

 login = (Button)settingsView.findViewById(R.id.ok_button1);
         login_user=(EditText)settingsView.findViewById(R.id.user1);
         login_pw=(EditText)settingsView.findViewById(R.id.pw1);


 ViewPager myPager = (ViewPager)findViewById(R.id.pager);

        MyPagerAdapter adapter = new MyPagerAdapter();
        myPager.setAdapter(adapter);
        myPager.setCurrentItem(0);


login.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

сделать что-то

}
        });

А вот и мой пейджинговый адаптер:

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

Так что я не могу понять, почему он не работает, потому что он создает правильные экземпляры, но слушатель не реагирует. Кто-нибудь здесь, чтобы открыть мои глаза? Спасибо

Обновление: Это значения, которые я получаю, когда создаю экземпляр Button с помощью findviewbyid:

логин = кнопка (id = 8300 ....) mAttachInfo = нуль , , , android.widget.Button@4050d490

Необходим ли mAttachInfo? или что-то еще не нормальное?

Обновление: Хорошо, выяснилось, что если я настраиваю onclick в XML, а затем использую только метод в коде, он работает нормально, но теперь это та же проблема Spinner.setAdapter, ничего не происходит ...

обновление: решено с помощью этой ссылки, оно блестящее

http://code.google.com/p/ratebeerforandroid/source/browse/RateBeerForAndroid/src/com/ratebeer/android/gui/fragments/SearchFragment.java#486

1 Ответ

0 голосов
/ 07 ноября 2012

Я использую onTouchListerner и затем пытаюсь обнаружить onclicklisterner. Вы можете отослать мой ответ здесь:
https://stackoverflow.com/a/13264379/968532

...