FlowingDrawer样例无法运行。

4
我尝试运行这个库的示例: https://github.com/mxn21/FlowingDrawer 使用这个过时的 build.gradle 文件,它可以正常工作:
apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.mt.stackoverflow"
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 120
        versionName "1.2.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:recyclerview-v7:22.+'
    compile 'com.android.support:design:22.2.1'
    compile 'com.squareup.picasso:picasso:2.5.0'
    compile 'com.android.support:cardview-v7:22.+'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.mxn.soul:flowingdrawer-core:1.2.2'
}

但是使用这个更新的build.gradle会失败。
apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.mt.stackoverflow"
        minSdkVersion 9
        targetSdkVersion 23
        versionCode 120
        versionName "1.2.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:recyclerview-v7:23.3.0'
    compile 'com.android.support:design:23.3.0'
    compile 'com.squareup.picasso:picasso:2.5.0'
    compile 'com.android.support:cardview-v7:23.3.0'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.mxn.soul:flowingdrawer-core:1.2.2'
}

致命异常:主要进程 进程:com.mt.stackoverflow,PID:31453 java.lang.RuntimeException:无法启动活动 ComponentInfo {com.mt.stackoverflow / com.mt.stackoverflow.MainActivity}: java.lang.IllegalArgumentException:目标不能为空。 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)处 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)处 在android.app.ActivityThread.-wrap11(ActivityThread.java)处 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344)处 在android.os.Handler.dispatchMessage(Handler.java:102)处 在android.os.Looper.loop(Looper.java:148)处 在android.app.ActivityThread.main(ActivityThread.java:5422)处 在java.lang.reflect.Method.invoke(Native Method)处 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)处 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)处 由于java.lang.IllegalArgumentException:目标不能为空。 在com.squareup.picasso.RequestCreator.into(RequestCreator.java:607)处 在com.squareup.picasso.RequestCreator.into(RequestCreator.java:590)处 在com.mt.stackoverflow.MyMenuFragment.setupHeader(MyMenuFragment.java:44)处 在com.mt.stackoverflow.MyMenuFragment.onCreateView(MyMenuFragment.java:31)处 在android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)处 在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)处 在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)处 在android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)处 在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)处 在android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339)处 在android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:602)处 在android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237)处 在android.app.Activity.performStart(Activity.java:6268)处 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)处 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)处 在android.app.ActivityThread.-wrap11(ActivityThread.java)处 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344)处 在android.os.Handler.dispatchMessage(Handler.java:102)处 在android.os.Looper.loop(Looper.java:148)处 在android.app.ActivityThread.main(ActivityThread.java:5422)处 在java.lang.reflect.Method.invoke(Native Method)处 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)处 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)处。
有什么想法可以使用最新的build.gradle依赖项运行示例吗?

展示MyMenuFragment.java文件: - Elltz
1个回答

1
该项目试图以与支持库的新版本不兼容的方式访问fragment_menu.xmlNavigationView标头中的ImageView。您可以在this post中找到详细信息。 ImageView用作Picasso调用中的target,由于无法再找到ImageView,因此它为空,这是IllegalArgumentException: Target must not be null错误的原因。
要修复它,请打开MyMenuFragment类并将onCreateView(...)替换为以下内容:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_menu, container, false);

    View header = ((NavigationView) view.findViewById(R.id.vNavigation)).getHeaderView(0);
    ivMenuUserProfilePhoto = (ImageView) header.findViewById(R.id.ivMenuUserProfilePhoto);

    setupHeader();
    return setupReveal(view) ;
}

基本上,您无法直接从view中找到ivMenuUserProfilePhoto。您需要先从NavigationView中获取标题视图,然后使用标题查找ImageView

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接