일부 장치 Android에서 ViewPager가 작동하지 않음 (ViewPager not working on some devices Android)


문제 설명

일부 장치 Android에서 ViewPager가 작동하지 않음 (ViewPager not working on some devices Android)

한 활동을 다른 활동으로 스와이프하기 위해 ViewPager 및 Tabpageradapter를 사용하고 있지만 Android 4.0 버전 아래에서 예외를 찾을 수 없습니다.

MainActivity****:

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    // Initilization Viewpager in main activity
    viewPager = (ViewPager) findViewById(R.id.pager);
    actionBar = getActionBar();
    getActionBar().setHomeButtonEnabled(true);
    getActionBar().setDisplayHomeAsUpEnabled(true);

    mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

    context = this.getApplicationContext();
    viewPager.setAdapter(mAdapter);
    actionBar.setHomeButtonEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        
    actionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.blackbox));
    actionBar.setStackedBackgroundDrawable(getResources().getDrawable(
            R.drawable.blackbox));

    // Adding Tabs
    for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
    }

    /**
     * on swiping the viewpager make respective tab selected
     * */
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {
            // on changing the page
            // make respected tab selected
            actionBar.setSelectedNavigationItem(position);
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
        }
    });
}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    // on tab selected
    // show respected fragment view
    viewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}

TabsPagerAdapter.class :

//Class using for tabs 
public class TabsPagerAdapter extends FragmentPagerAdapter {

public TabsPagerAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int index) {

    switch (index) {
    case 0:
        // Top Rated fragment activity that is the first activity to open
        return new PunjabiFragment();
    case 1:
        // Games fragment activity(Second activity to open
        return new HindiFragment();
    case 2:
        // Movies fragment activity(third activity to open
        return new EnglishFragment();
    }

    return null;
}

@Override
public int getCount() {
    // get item count ‑ equal to number of tabs
    return 3;
}

AndroidManifest.xml

6
<uses‑sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="23" />

logcat에서 이 오류가 발생함:

66666966666

참조 솔루션

방법 1:

Are you using <android.support.v4.view.ViewPager /> instead of <ViewPager /> in your xml file?

방법 2:

You might want to have a look at this and this. Min version for ViewPager is 4.0. For compatibility you can use the library in the link. The second link gives you the compatibility library.

방법 3:

Besides Sohaib's answer, pointing that you should use the compatibility library, if you are loading content from a web service, you may need to extend from FragmentStatePagerAdapter. I had some similar problem before and just changing the base PagerAdapter fixed the issue.

방법 4:

Carefully look at your onCreate method.

In my case I was checking for some permissions and using return; if the permission is not granted.

That is why I could not run my app on the marshmallow, but could run my app on the lower versions.

(by NehaOctaviano PutraSohaibTomás Ruiz‑LópezSultan Ali)

참조 문서

  1. ViewPager not working on some devices Android (CC BY‑SA 2.5/3.0/4.0)

#tabs #Android #android-viewpager






관련 질문

양식 제출 후 현재 탭 유지 (Keeping the current tabs after submitting the form)

슬라이드다운 탭이 예상대로 작동하지 않음 (Slide-down tabs not working as expected)

일부 장치 Android에서 ViewPager가 작동하지 않음 (ViewPager not working on some devices Android)

ScrollView가 조각에서 작동하지 않습니다 (ScrollView doesn't work in fragment)

공백이 많은 줄을 읽고 출력에서 유지 (Reading lines with a lot of spaces and maintaining them in output)

Google지도 조각을 찾을 수 없습니다 (Can't find google maps fragment)

kaldi 설치 시 libmkl_tbb_thread.so sth 관련 문제 (A problem related to libmkl_tbb_thread.so sth when installing kaldi)

링크 클릭 시 새 탭 또는 창에서 특정 링크 열기 (Open specific link in new tab or window on link clicking)

Vue.js uiv 라이브러리의 Tab 구성 요소에 대한 클래스를 설정하는 방법은 무엇입니까? (How to set up classes for Vue.js uiv library's Tab component?)

Foundation 탭이 초기화되었는지 확인하는 방법은 무엇입니까? (How to check if Foundation tabs are initialized?)

고유 참조가 없는 한 HTML 페이지의 여러 탭(ID 또는 클래스 없음) (Multiple tabs in one HTML page without unique reference (no ID or class))

Angular Slickgrid 예제 24에서 Angular slickgrid 및 ngfor를 사용하여 동적으로 탭 만들기 (Dynamically create tabs with Angular slickgrid and ngfor in Angular Slickgrid Example 24)







코멘트