2015-04-12 3 views
0

Я использую https://github.com/panxw/android-viewpager-indicator для управления пейджером на основе вкладок.Onclick over viewPager - Android

Все работает отлично, за исключением ссылочной части. Не работает прослушиватель событий onclick.

Вот мой код:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_flight_search_screen);   
    //set ViewPagerIndicatorView 
    this.viewPagerIndicatorView = (ViewPagerIndicatorView) findViewById(R.id.viewpager_indicator_view); 
    final Map<String, View> map = new HashMap<String, View>(); 
    map.put("Tab 1", LayoutInflater.from(this).inflate(R.layout.tab_one_activity, null)); 
    map.put("Tab 2", LayoutInflater.from(this).inflate(R.layout.tab_two_activity, null)); 
    this.viewPagerIndicatorView.setupLayout(map); 

    View view = LayoutInflater.from(this).inflate(R.layout.tab_one_activity, null); 
    this.buttonFromTab1 = (LinearLayout) view.findViewById(R.id.buttonFromTab1); 
    this.buttonFromTab1.setOnClickListener(new OnClickListener() {  
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Toast.makeText(getApplicationContext(), "Some message", Toast.LENGTH_LONG).show(); 
     } 
    }); 
} 

Я не получаю никаких исключений, а поэтому очень трудно понять, что происходит не так.

ответ

0

Это связано с тем, что вы не прикрепляете свое событие click к представлению, которое используется ViewPager.

Здесь вы создаете макет для ViewPager и ничего не предпринимаете с ним.

map.put("Tab 1", LayoutInflater.from(this).inflate(R.layout.tab_one_activity, null)); 

И здесь вы создаете тот же макет, присоединяете событие click, но ничего не делаете с ним. Это даже не видно на экране.

View view = LayoutInflater.from(this).inflate(R.layout.tab_one_activity, null); 

Вам нужно сделать что-то вроде этого:

View firstTabLayout = LayoutInflater.from(this).inflate(R.layout.tab_one_activity, null); 
map.put("Tab 1", firstTabLayout); 
LinearLayout xxx = firstTabLayout.find(...); 
xxx.setonclick(...); 

.

Но вам, вероятно, придется изменить текущую страницу ViewPager самостоятельно в событии click, потому что, поскольку вы получите событие, исходное поведение может не сработать.

+0

Итак, каков наилучший подход для такого рода ситуаций? –

+0

также предоставленное решение не работает; ( –

+0

Вам действительно нужен пользовательский макет для названия вкладки? Потому что я бы рекомендовал использовать реализацию табуляции, которая работает только с PagerAdapter. –

Смежные вопросы