Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何以可以修改的方式导入android支持库?_Android_Android Studio_Dependencies_Edit_Support V4 - Fatal编程技术网

如何以可以修改的方式导入android支持库?

如何以可以修改的方式导入android支持库?,android,android-studio,dependencies,edit,support-v4,Android,Android Studio,Dependencies,Edit,Support V4,我想在安卓工作室里学习。我目前将support-v4库作为库依赖项,但我知道Android Studio不允许直接编辑外部库 尝试1: 我尝试在项目中的java.android.support.v4.view包中复制粘贴ViewPager。当我修改并测试它时,它似乎不起作用,因为它显示的是ViewPager的标准功能,而不是修改后的功能 尝试2:我尝试将其包名更改为com.example.view,以区别于支持库。它不能很好地工作,因为ViewPager的一些功能依赖于它正确的包名,这导致了一些

我想在安卓工作室里学习。我目前将support-v4库作为库依赖项,但我知道Android Studio不允许直接编辑外部库

尝试1: 我尝试在项目中的java.android.support.v4.view包中复制粘贴ViewPager。当我修改并测试它时,它似乎不起作用,因为它显示的是ViewPager的标准功能,而不是修改后的功能

尝试2:我尝试将其包名更改为com.example.view,以区别于支持库。它不能很好地工作,因为ViewPager的一些功能依赖于它正确的包名,这导致了一些错误,例如ClassCastException

尝试3:我尝试将ViewPager放入一个新添加的名为“lib”的模块中,我将其包含在settings.gradle中,并作为“app”模块的依赖项添加。似乎也不起作用

我没有尝试的是摆脱support-v4 gradle依赖项,而是在我的项目中复制粘贴整个源代码。这有点多,我不想这样做,因为我想让support-v4库保持最新,同时只覆盖ViewPager类。(我也不知道如何获得最新版本的源代码。我听说他们只在每个主要API版本中开放源代码。)

从这里我能做什么?提前谢谢

从这里我能做什么

重做第二次尝试。如果需要,将其他类(例如,
PagerAdapter
)复制到
com.example.view
包中,然后切换应用程序代码以引用这些类。基本上,您正在分叉
ViewPager
,这可能需要您分叉不止一个类

请注意,其他需要real
ViewPager
的代码(如指示器)将无法与您的fork一起使用,它们本身需要被fork

<>你可能想考虑你的更改是否可以通过一个简单的子类来处理。 我知道Android Studio不允许直接编辑外部库

此外,正如您在后面的问题中所注意到的,如果您修改了库,则在库发生更改时必须重新应用这些修改

我也不知道如何获得最新版本的源代码

Java在您的硬盘上,在Android存储库中。查找
…sources.jar
文件

从这里我能做什么

重做第二次尝试。如果需要,将其他类(例如,
PagerAdapter
)复制到
com.example.view
包中,然后切换应用程序代码以引用这些类。基本上,您正在分叉
ViewPager
,这可能需要您分叉不止一个类

请注意,其他需要real
ViewPager
的代码(如指示器)将无法与您的fork一起使用,它们本身需要被fork

<>你可能想考虑你的更改是否可以通过一个简单的子类来处理。 我知道Android Studio不允许直接编辑外部库

此外,正如您在后面的问题中所注意到的,如果您修改了库,则在库发生更改时必须重新应用这些修改

我也不知道如何获得最新版本的源代码


Java在您的硬盘上,在Android存储库中。查找
…sources.jar
文件。

通常,修改第三方库不是一个好主意,除非您真的知道自己在做什么。在不了解所有类和方法依赖关系的情况下,您可以轻松地打破一切


一个很好的选择是封装或继承。两者都是有充分基础的面向对象原则。通过封装,您可以创建一个类型为ViewPager的成员字段,并根据需要对其进行委托方法调用。通过继承,您可以扩展ViewPager并覆盖任何您希望提供不同行为的方法。最有可能的是继承是最适合您的解决方案,这样您就可以在通常使用ViewPager的任何地方使用新类

一般来说,修改第三方库不是一个好主意,除非你真的知道自己在做什么。在不了解所有类和方法依赖关系的情况下,您可以轻松地打破一切


一个很好的选择是封装或继承。两者都是有充分基础的面向对象原则。通过封装,您可以创建一个类型为ViewPager的成员字段,并根据需要对其进行委托方法调用。通过继承,您可以扩展ViewPager并覆盖任何您希望提供不同行为的方法。最有可能的是继承是最适合您的解决方案,这样您就可以在通常使用ViewPager的任何地方使用新类

为什么要编辑ViewPager?如果你想修改它的功能,你可以扩展它。@Code peedient我想测试上面链接的代码,因为它正在修改ViewPager中的私有方法。很遗憾,代码没有按预期工作。为什么要编辑ViewPager?如果你想修改它的功能,你可以扩展它。@Code peedient我想测试上面链接的代码,因为它正在修改ViewPager中的私有方法。不幸的是,代码没有按预期工作。它工作了,谢谢。作为补充说明,上面链接的修改后的ViewPager代码没有按预期工作,因此修改支持库是徒劳的。它工作了,谢谢。作为补充说明,上面链接的修改后的ViewPager代码无法按预期工作,因此修改支持库是徒劳的。