2015-12-01 20 views
34

Tôi gặp lỗi khi chạy dự án của mình. Tôi chỉ đang theo dõi tutorial này và sử dụng nó trong dự án của tôi.LOẠI TRỪ KHÓA: chính java.lang.NoClassDefFoundError: android.support.v7.internal.widget.TintManager

mã của tôi là hoàn toàn giống nhau trong hướng dẫn

public class MainEventActivity extends AppCompatActivity { 

private Toolbar toolbar; 
private TabLayout tabLayout; 
private ViewPager viewPager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_event_activity); 

    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    viewPager = (ViewPager) findViewById(R.id.viewpager); 
    setupViewPager(viewPager); 

    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 
} 

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new OneFragment(), "ONE"); 
    adapter.addFragment(new TwoFragment(), "TWO"); 
    adapter.addFragment(new ThreeFragment(), "THREE"); 
    viewPager.setAdapter(adapter); 
} 

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 

Im gọi MainEventActivity như thế này:

btnNext.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       Intent i = new Intent(MainActivity.this, MainEventActivity.class); 
       startActivity(i); 
       finish(); 
      } 
     }); 

tôi log lỗi:

12-01 08:00:29.903 22530-22530/com.erlawkward.albarol.eventlocatorapp 
E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.NoClassDefFoundError: android.support.v7.internal.widget.TintManager 
      at android.support.design.widget.TabLayout$TabView.<init>(TabLayout.java:1145) 
      at android.support.design.widget.TabLayout.createTabView(TabLayout.java:635) 
      at android.support.design.widget.TabLayout.addTabView(TabLayout.java:669) 
      at android.support.design.widget.TabLayout.addTab(TabLayout.java:365) 
      at android.support.design.widget.TabLayout.addTab(TabLayout.java:340) 
      at android.support.design.widget.TabLayout.setTabsFromPagerAdapter(TabLayout.java:624) 
      at android.support.design.widget.TabLayout.setupWithViewPager(TabLayout.java:595) 
      at com.erlawkward.albarol.eventlocatorapp.activity.activity.MainEventActivity.onCreate(MainEventActivity.java:41) 
      at android.app.Activity.performCreate(Activity.java:5104) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
      at android.app.ActivityThread.access$600(ActivityThread.java:141) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
      at android.os.Handler.dispatchMessage(Handler.java:99) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:5041) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
      at dalvik.system.NativeStart.main(Native Method) 

lỗi trong dòng này:

tabLayout.setupWithViewPager(viewPager); 
+0

sao bạn gọi 'biên dịch 'com.android.support: Thiết kế: 23.0.1'' –

+1

@IntelliJAmiya vâng thưa ông, đây là dependecies tôi: biên dịch 'com.android.support:appcompat-v7:23.1.1' biên dịch 'com.android.support:support-v4:23.1.1' biên dịch ' com.mcxiaoke.volley: library-aar: 1.0.0 ' biên dịch 'com.android.support:design:23.0.1' – ErlAl

+0

Tôi vẫn đang gặp sự cố, biên dịch 'com.android.support:support-v4:23.1.1' biên dịch 'com.android.support:appcompat- v7: 23.1.1 ' biên dịch' com.android.support:design:23.0.1 ' –

Trả lời

56

Tất cả thư viện hỗ trợ phải là cùng một phiên bản. Hãy thử thay đổi một trong hai appcompat-v7 và hỗ trợ-v4 để 23.0.1 hoặc thiết kế để 23.1.1

+0

Tôi nhận được c: \ program files \ java \ jdk1.7.0_80 \ bin \ java.exe '' kết thúc với giá trị xuất cảnh khác 0 số –

0

thử với bộ tất cả lib hỗ trợ với cùng một verion ví dụ

compile 'com.android.support:appcompat-v7:23.1.1' 
compile 'com.android.support:recyclerview-v7:23.1.1' 
compile 'com.android.support:design:23.1.1' 
2

tôi cố định một vấn đề tương tự bằng cách thay đổi của tôi sự phụ thuộc từ:

biên dịch 'com.android.support:design:23.1.1'

để

biên dịch 'com.android.support:design:23.+'

đơn vị của tôi ở cuối là theo cách này:

compile 'com.android.support:appcompat-v7:23.1.1' 
compile 'com.android.support:support-v4:23.0.0' 
compile 'com.android.support:cardview-v7:23.0.0' 
compile 'com.android.support:design:23.+' 
1

Tôi nghĩ rằng đó là bởi vì các lib "biên dịch" com.mcxiaoke.volley: thư viện aaa: 1.0.0" được sử dụng trong gradle của bạn bao gồm phiên bản khác nhau của 'com.android.support: :' như được xác định trong bảng màu của bạn.

vì vậy bạn nên làm điều đó thích:

compile ('com.mcxiaoke.volley:library-aaa:1.0.0') { 
    transitive = false 
} 
+0

Wow. Điều này đã làm việc cảm ơn bạn. bạn có thể đưa ra lời giải thích nếu có thể không –

4

Nếu bạn tải phiên bản cao hơn của thư viện hỗ trợ, gradle sử dụng trên phiên bản âm thầm ngay cả khi bạn định nghĩa là 23.1.1.

Bạn có thể kiểm tra gradlew app:dependencies -q xem phiên bản chính xác có được sử dụng hay không.

Để sửa bàn giao phiên bản trên, hãy đặt force = true cho tất cả thư viện hỗ trợ như sau.

compile ('com.android.support:support-v4:23.1.1'){ 
    force = true; 
} 
compile ('com.android.support:appcompat-v7:23.1.1'){ 
    force = true; 
} 
compile ('com.android.support:design:23.1.1'){ 
    force = true; 
} 
compile ('com.android.support:cardview-v7:23.1.1'){ 
    force = true; 
} 
compile ('com.android.support:recyclerview-v7:23.1.1'){ 
    force = true; 
} 
0

Dường như họ đã thay thế TintManager bằng AppCompatDrawableManager.

Ít nhất tôi đã đảm bảo rằng tôi đã sử dụng ở mọi nơi cùng một phiên bản thư viện hỗ trợ (24.0.0) và nó vẫn không hoạt động cho đến khi tôi thay thế tất cả các địa điểm đã được sử dụng với AppManagerDrawableManager.

here AppCompatDrawableManager vẫn có thẻ TintManager.

0

biên dịch 'com.android.support:appcompat-v7:23.2.0' biên dịch 'com.android.support:design:23.2.0' biên dịch 'com.android.support:recyclerview-v7:23.2. 0 ' biên dịch' com.android.support:support-v4:23.2.0 ' biên dịch' com.android.support:cardview-v7:23.2.0 '

1

Tôi đã giải quyết vấn đề này bằng cách thêm biên dịch' com. android.support:design:23.+' mặc dù phụ thuộc hỗ trợ của tôi cũng tương tự như

Trước

compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:support-v4:23.1.1' 
    compile 'com.android.support:design:23.1.1' 

Sau - công trình này cho tôi

compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:support-v4:23.1.1' 
    compile 'com.android.support:design:23.+' 
1
compile 'com.android.support:appcompat-v7:23.4.0' 
compile 'com.android.support:design:23.4.0' 

Bạn phải sử dụng cùng một phiên bản cho sự phụ thuộc như trên

Các vấn đề liên quan