2016-02-09 4 views
0

Я пытаюсь реализовать меню прокрутки ActionBarSherlock, так как мне нравится, как эта анимация скользит по меню слайдов. К сожалению, я продолжаю получать эту ошибку и не смог ее решить.java.lang.NoSuchFieldError: android.support.v4.app.Watson.mFragments

Этот парень получает ту же ошибку, но ни один из ответов на это не решает мою проблему. Android: java.land.NoSuchFieldError after update to SDK 23

Это мой файл Gradle.

buildscript { 
    repositories { 
     maven { url 'https://maven.fabric.io/public' } 
    } 

    dependencies { 
     classpath 'io.fabric.tools:gradle:1.+' 
    } 
} 
apply plugin: 'com.android.application' 
apply plugin: 'io.fabric' 
apply plugin: 'com.google.gms.google-services' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    defaultConfig { 
     applicationId "com.myegotest.ego_17012016" 
     minSdkVersion 14 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
     multiDexEnabled true 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

repositories { 
    mavenCentral() 
    maven { url 'https://maven.fabric.io/public' } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    //compile 'com.android.support:appcompat-v7:23.1.1' 
    //compile 'com.android.support:design:23.1.1' 
    compile 'com.squareup.picasso:picasso:2.5.2' 
    compile 'com.facebook.android:facebook-android-sdk:4.9.0' 
    compile('com.twitter.sdk.android:twitter:[email protected]') { 
     transitive = true; 
    } 
    compile 'com.mcxiaoke.volley:library-aar:1.0.0' 
    //compile 'com.android.support:multidex:1.0.1' 
    compile "com.android.support:support-v4:23.1.1" 

    compile 'com.squareup.okhttp:okhttp:2.5.0' 
    compile 'com.squareup.retrofit:retrofit:1.9.0' 
    compile 'com.google.android.gms:play-services-auth:8.3.0' 
    compile project(':SlidingMenuLib-master') 
} 

Это упражнение, пытающееся реализовать SlidingMenu.

И, наконец, вот ошибка, которую я получаю.

E/AndroidRuntime: FATAL EXCEPTION: main 
E/AndroidRuntime: Process: com.myegotest.ego_17012016, PID: 8545 
E/AndroidRuntime: java.lang.NoSuchFieldError: android.support.v4.app.Watson.mFragments 
E/AndroidRuntime:  at android.support.v4.app.Watson.onCreatePanelMenu(Watson.java:50) 
E/AndroidRuntime:  at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:560) 
E/AndroidRuntime:  at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSherlockNative.java:64) 
E/AndroidRuntime:  at com.actionbarsherlock.app.SherlockFragmentActivity.onCreatePanelMenu(SherlockFragmentActivity.java:164) 
E/AndroidRuntime:  at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:486) 
E/AndroidRuntime:  at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:855) 
E/AndroidRuntime:  at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:271) 
E/AndroidRuntime:  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:803) 
E/AndroidRuntime:  at android.view.Choreographer.doCallbacks(Choreographer.java:603) 
E/AndroidRuntime:  at android.view.Choreographer.doFrame(Choreographer.java:572) 
E/AndroidRuntime:  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:789) 
E/AndroidRuntime:  at android.os.Handler.handleCallback(Handler.java:733) 
E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:95) 
E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:157) 
E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:5293) 
E/AndroidRuntime:  at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:515) 
E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 
E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 
E/AndroidRuntime:  at dalvik.system.NativeStart.main(Native Method) 
I/Process: Sending signal. PID: 8545 SIG: 9 
+0

Вы пытались добавить эту ' "com.android.support:support-v4:23.1.0"' вместо ' "com.android.support:support-v4:23.1.1"'. И ошибка все еще поднимается? Или вам нужно 23.1.1. –

+0

Действительно ли 'Watson.mFragments' действительно существует? –

+0

@ShreeKrishna Я пробовал, что он все еще не работает. Ошибка im get now - java.lang.NoSuchFieldError: Нет полей экземпляра mFragments типа Landroid/support/v4/app/FragmentManagerImpl; в классе Landroid/support/v4/app/Watson; или его суперклассы (объявление «android.support.v4.app.Watson» появляется в /data/app/com.myegotest.ego_17012016-2/base.apk) –

ответ

0

Я был в состоянии решить проблему, удалив фейсбук sdk из моего файла градиента. Так как мне нужен sdk facebook, я смог обойти это, сделав MainActivity просто расширением FragmentActivity вместо SlidingFragmentActivty. Я сделал этот внутренний класс внутри MainActivty для расширения SlidingActivity, таким образом, я все еще могу использовать методы, которые мне нужны.

private class SlidingMenuClass extends SlidingActivity { 
     private SlidingMenu sm; 

     public SlidingMenuClass(Context ctx){ 
      sm = new SlidingMenu(ctx); 
     } 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setBehindContentView(R.layout.menu_frame); 
      getSupportActionBar().setDisplayHomeAsUpEnabled(true); 


      sm = getSlidingMenu(); 
      sm.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); 
      sm.setShadowWidthRes(R.dimen.shadow_width); 
      //sm.setShadowDrawable(R.drawable.shadow); 
      sm.setFadeDegree(1f); 
      sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); 
      sm.setBehindOffsetRes(R.dimen.behindoffsetRes); 
     } 

     @Override 
     public boolean onOptionsItemSelected(MenuItem item) { 
      switch (item.getItemId()) { 
       case android.R.id.home: 
        toggle(); 
        return true; 
      } 
      return super.onOptionsItemSelected(item); 
     } 

    } 
+0

Вы сделали внутренний класс? Деятельность другой деятельности? Это похоже на плохой дизайн ... –

+0

Это был единственный способ понять, как бы вы это сделали? –

+1

Не знаю. Я думаю, что создание отдельного файла, содержащего этот класс, решит ту же проблему. Я просто не считаю, что занятия должны быть внутренними. –

Смежные вопросы