Ответ 1
Все библиотеки поддержки должны быть одинаковой версии. Попробуйте изменить либо appcompat-v7, либо поддержку-v4 до 23.0.1, либо дизайн до 23.1.1
Я получаю сообщение об ошибке при запуске моего проекта. Я просто следовал этому учебнику и использовал его в своем проекте.
мой код, который точно подобен в учебнике
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);
}
}
Я вызываю MainEventActivity следующим образом:
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, MainEventActivity.class);
startActivity(i);
finish();
}
});
мой журнал ошибок:
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)
ошибка в этой строке:
tabLayout.setupWithViewPager(viewPager);
Все библиотеки поддержки должны быть одинаковой версии. Попробуйте изменить либо appcompat-v7, либо поддержку-v4 до 23.0.1, либо дизайн до 23.1.1
Если вы загружаете более высокую версию библиотеки поддержки, gradle использует верхнюю версию без звука, даже если вы определили ее как 23.1.1
.
Вы можете проверить gradlew app:dependencies -q
, используется ли верная версия или нет.
Чтобы исправить передачу обслуживания верхней версии, установите force = true
во все библиотеки поддержки, как показано ниже.
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;
}
Я установил аналогичную проблему, изменив свою зависимость от:
compile 'com.android.support:design:23.1.1'
to
compile 'com.android.support:design:23.+'
Мои юниты в конце были такими:
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.+'
Я думаю, это связано с тем, что lib "compile" com.mcxiaoke.volley: library-aaa: 1.0.0 '", используемый в вашем gradle, включая другую версию' com.android.support:: 'как define в gradle.
поэтому вы должны сделать это так:
compile ('com.mcxiaoke.volley:library-aaa:1.0.0') {
transitive = false
}
Я решил эту проблему, добавив компиляцию 'com.android.support:design:23.+', хотя мои поддерживающие зависимости похожи
До
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'
После - это работает для меня
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:design:23.+'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
Вы должны использовать ту же версию для зависимостей, как указано выше
попробуйте установить всю поддержку lib с таким же верификацией, например
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'
Похоже, что они заменили TintManager на AppCompatDrawableManager.
По крайней мере, я убедился, что везде использовал одну и ту же версию библиотеки поддержки (24.0.0), и она все еще не работала, пока я просто не заменил все места, где TintManager использовался с AppCompatDrawableManager.
И здесь AppCompatDrawableManager все еще имеет тег TintManager.
compile 'com.android.support:appcompat-v7:23.2.0' compile 'com.android.support:design:23.2.0' compile 'com.android.support:recyclerview-v7:23.2.0' compile 'com.android.support:support-v4:23.2.0' compile 'com.android.support:cardview-v7:23.2.0'