【发布时间】:2017-07-26 05:02:33
【问题描述】:
我想为 android 应用程序制作一个 GUI,其中我有 TabLayout 用于单独的片段。到目前为止,我的 MainActivity.java 和 activity_main.xml 看起来像这样:
MainActivity.java:
package com.example.cortana.testing.activity;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import java.util.ArrayList;
import java.util.List;
import com.example.cortana.testing.R;
import com.example.cortana.testing.fragments.Fragment_A;
import com.example.cortana.testing.fragments.Fragment_B;
public class MainActivity extends AppCompatActivity {
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
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 Fragment_A(), "A");
adapter.addFragment(new Fragment_B(), "B");
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);
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" >
</android.support.v7.widget.Toolbar>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="fixed"
app:tabGravity="fill" >
</android.support.design.widget.TabLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" >
</android.support.v4.view.ViewPager>
</android.support.design.widget.CoordinatorLayout>
其他内容(片段及其布局)已正确设置。现在,问题是当我使用 MainActivity.java 的 line 44 上的函数 tabLayout.setupWithViewPager(viewPager); 包含带有 viewPager 的 tablayout 时,应用程序崩溃了。应用程序不会崩溃并按预期运行(栏上没有选项卡,但存在片段)。
应用崩溃报告在这里:
06-23 11:23:05.949 21271-21271/com.example.cortana.testing E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.cortana.testing, PID: 21271
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/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.example.cortana.testing.activity.MainActivity$override.onCreate(MainActivity.java:44)
at com.example.cortana.testing.activity.MainActivity$override.access$dispatch(MainActivity.java)
at com.example.cortana.testing.activity.MainActivity.onCreate(MainActivity.java:0)
at android.app.Activity.performCreate(Activity.java:6220)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2513)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2646)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4324)
at android.app.ActivityThread.access$900(ActivityThread.java:182)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1494)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5763)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.internal.widget.TintManager" on path: DexPathList[[dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-support-annotations-23.4.0_bb0868973057e0c4594582a2b34966b1571b4498-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_9-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_8-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_7-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_6-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_5-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_4-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_3-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_2-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_1-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_0-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-internal_impl-23.4.0_0380fc8cb59e96244f130184574ead0ab4fa81a6-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-com.android.support-support-vector-drawable-23.4.0_222d58f6b3309dd767eaedd78b101df07bb0214b-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-com.android.support-support-v4-23.4.0_d9254cdfbfc7a83fc69750e7bacf0c28659d5fbe-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-com.android.support-design-23.0.1_e104774034c64e7848d1f2ca9937e0b0ba73cbda-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-com.android.support-appcompat-v7-23.4.0_9c2b828fb5b4db0ad04d9c69d99c765617e6767c-classes.dex", dex
06-23 11:23:05.950 21271-21271/com.example.cortana.testing D/Error: ERR: exClass=java.lang.ClassNotFoundException
06-23 11:23:05.950 21271-21271/com.example.cortana.testing D/Error: ERR: exMsg=Didn't find class "android.support.v7.internal.widget.TintManager" on path: DexPathList[[dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-support-annotations-23.4.0_bb0868973057e0c4594582a2b34966b1571b4498-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_9-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_8-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_7-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_6-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_5-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_4-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_3-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_2-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_1-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_0-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-internal_impl-23.4.0_0380fc8cb59e96244f130184574ead0ab4fa81a6-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-com.android.support-support-vector-drawable-23.4.0_222d58f6b3309dd767eaedd78b101df07bb0214b-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-com.android.support-support-v4-23.4.0_d9254cdfbfc7a83fc69750e7bacf0c28659d5fbe-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-com.android.support-design-23.0.1_e104774034c64e7848d1f2ca9937e0b0ba73cbda-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-com.android.support-appcompat-v7-23.4.0_9c2b828fb5b4db0ad04d9c69d99c765617e6767c-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-com.android.support-animated-vector-drawable-23.4.0_295f5bae1ae17fe25c8f6037cf5499452801adbf-classes.dex"],nativeLibraryDirectories=[/vendor/lib64, /system/lib64, /vendor/lib64, /system/lib64]]
06-23 11:23:05.950 21271-21271/com.example.cortana.testing D/Error: ERR: file=BaseDexClassLoader.java
06-23 11:23:05.950 21271-21271/com.example.cortana.testing D/Error: ERR: class=dalvik.system.BaseDexClassLoader
06-23 11:23:05.950 21271-21271/com.example.cortana.testing D/Error: ERR: method=findClass line=56
06-23 11:23:05.951 21271-21271/com.example.cortana.testing D/Error: ERR: stack=java.lang.NoClassDefFoundError: Failed resolution of: Landroid/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.example.cortana.testing.activity.MainActivity$override.onCreate(MainActivity.java:44)
at com.example.cortana.testing.activity.MainActivity$override.access$dispatch(MainActivity.java)
at com.example.cortana.testing.activity.MainActivity.onCreate(MainActivity.java:0)
at android.app.Activity.performCreate(Activity.java:6220)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2513)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2646)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4324)
at android.app.ActivityThread.access$900(ActivityThread.java:182)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1494)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5763)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.internal.widget.TintManager" on path: DexPathList[[dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-support-annotations-23.4.0_bb0868973057e0c4594582a2b34966b1571b4498-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_9-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_8-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_7-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_6-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_5-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_4-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_3-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_2-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_1-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-slice_0-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-internal_impl-23.4.0_0380fc8cb59e96244f130184574ead0ab4fa81a6-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-com.android.support-support-vector-drawable-23.4.0_222d58f6b3309dd767eaedd78b101df07bb0214b-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-com.android.support-support-v4-23.4.0_d9254cdfbfc7a83fc69750e7bacf0c28659d5fbe-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-com.android.support-design-23.0.1_e104774034c64e7848d1f2ca9937e0b0ba73cbda-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/slice-com.android.support-appcompat-v7-23.4.0_9c2b828fb5b4db0ad04d9c69d99c765617e6767c-classes.dex", dex file "/data/data/com.example.cortana.testing/files/instant-run/dex/sl
06-23 11:23:05.951 21271-21271/com.example.cortana.testing D/Error: ERR: TOTAL BYTES WRITTEN: 21616
06-23 11:23:07.877 21271-21271/com.example.cortana.testing I/Process: Sending signal. PID: 21271 SIG: 9
我不知道为什么会这样。我应该怎么做才能解决它?还请包括这次崩溃的原因。
编辑:我已将库 compile com.android.support:design:23.1.1' 包含在 build.gradle 中,但它仍然给出完全相同的错误。我已经清理了项目,然后重建了它。
build.gradle 看起来像这样:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.example.cortana.testing"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.1.1'
}
编辑 2:
我安装了相同版本的库,但仍然无法使用。有人可以提出一些其他的想法。
正如我之前所说,让所有事情都崩溃的函数是tablayout.setupWithViewPager(viewPager);。如果我将其注释掉,该应用程序就可以正常工作。
【问题讨论】:
-
哇,感谢您的快速回答
-
尝试先清理你的项目,然后运行。如果仍然无法正常工作,请尝试更新您的设计支持库。请注意,有时 android studio 中的“即时运行”功能会出现不正确的行为并导致您的项目无法正常工作。
-
我已将设计类包含在清单中,但它仍然因相同的错误而崩溃。 android studio 中的 clean 项目按钮又在哪里:|
-
在菜单构建中,选择清理项目
标签: java android android-fragments