2016-06-23 5 views
0

私は別の部分にTabLayoutを持っているアンドロイドアプリのGUIを作っています。今、私のMainActivity.java Uptilとこのようになりactivity_main.xml:ViewPagerを使ったTabLayoutがアプリのクラッシュにつながる

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に存在するfuntion 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に含めましたが、それでもまったく同じエラーが表示されます。私はプロジェクトをきれいにしてから再構築しました。私は、ライブラリの同じバージョンをインストールしているし、それはまだ仕事を文句を言わない

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' 
} 

EDIT 2: build.gradleはこのようになります。誰か他のアイディアを提案してもらえますか? 私が前に言ったように、すべてを上回る機能は、tablayout.setupWithViewPager(viewPager);です。私がそれをコメントアウトすると、アプリは正常に動作します。

+1

http://stackoverflow.com/questions/34046525/didnt-find-class-android-support-v7-internal-widget-tintmanager-on-path-dexp –

+0

ワウ、速い応答のためにありがとう –

+0

きれいにしてみてください最初にプロジェクトを作成してから実行します。それでも動作しない場合は、デザインサポートライブラリを更新してください。アンドロイドスタジオの「インスタントラン」機能がうまく動作し、プロジェクトが機能しなくなることがあることに注意してください。 –

答えて

0

これは、クラスローダーがクラスandroid.support.v7.internal.widget.TintManagerを見つけることができないために発生しています。

あなたはおそらくあなたのbuild.gradleにこれを追加する必要があります:

compile 'com.android.support:appcompat-v7:24.0.0' 
compile 'com.android.support:design:24.0.0' 

ところで、あなたはサポートライブラリのバージョンを混在させることはできません。投稿を編集して投稿を表示しています:

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

これはしないでください(23.4.0と23.1.1の組み合わせ)。 23.4.0または23.1.1を使用してください。多くのバグを解決するので、最新(24.0.0)を使用することをお勧めします。

「すべてのgradleプロジェクトをリフレッシュする」ことを忘れないでください。 enter image description here

PS:OWええ、アーヤスターク@は、同じでなければなりませ離れハウンド;-)

+0

私はハウンドと私は冷ややかだと思います。そして、私はどのように "先端のついたものでそれらを守る"方法を知っています:) –

+0

あなたは女の子に行く: - D – Niels

+0

@aryastark私はあなたの更新を見ました、あなたはサポートライブラリのバージョンを混在させるべきではありません。私の更新された答えも見てください。 – Niels

0

サポートライブラリと設計ライブラリのバージョンから滞在してください。

compile 'com.android.support:appcompat-v7:23.1.0' 
    compile 'com.android.support:design:23.1.0' 

またはそれをしようと同様に

..私はそれが動作を期待

android { 
........ 
    repositories { 
     maven { url 'http://repo1.maven.org/maven2' } 
    } 
.......... 
    } 

...

+0

はい、初めて取得して試しました。助けにならない。 –

0

は、アンドロイド(https://code.google.com/p/android/issues/detail?id=180027

あなたがそのスレッドに従うならば、あなたがハッキングソリューションやライブラリの一部を見ることができるのバグがあります。あなたの最後にどうやって解決しましたか?

関連する問題