【问题标题】:Error including Android-DirectionalViewPager .jar in Eclipse在 Eclipse 中包含 Android-DirectionalViewPager .jar 时出错
【发布时间】:2012-05-23 12:49:56
【问题描述】:

我正在尝试在我的应用中实现垂直滑动。 (就像使用ViewPager 滑动一样,但垂直滑动)。

我找到了 Jake Whartons 图书馆 Android-DirectionalViewPager。它是一个独立的 .jar 文件,除了兼容性库外,还应包括在内。 我将文件包含在我的项目中。它现在位于“引用库”下,就像兼容性库一样。
但问题是,我什至无法让图书馆提供的示例正常工作。 调试器停在行

setContentView(R.layout.main);

带有“未找到来源”

LogCat 抛出此错误: "05-23 14:43:13.583: E/dalvikvm(329): 找不到类 'com.directionalviewpager.DirectionalViewPager',引用自方法 own.vvp.MainActivity.onCreate "

有人已经使用过这个库吗?我需要一些帮助:)

这是我的代码:

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="own.vvp"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="7" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>

布局:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<com.directionalviewpager.DirectionalViewPager
    android:id="@+id/pager"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    />

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="2dp"
    android:orientation="horizontal">

    <Button
        android:id="@+id/horizontal"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_marginRight="1dp"
        android:text="Horizontal" />
    <Button
        android:id="@+id/vertical"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_marginLeft="1dp"
        android:text="Vertical" />

</LinearLayout>

</LinearLayout>

和主要活动:

package own.vvp;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.Button;
import com.directionalviewpager.DirectionalViewPager;


public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //Set up the pager
    final DirectionalViewPager pager = (DirectionalViewPager)findViewById(R.id.pager);
    pager.setAdapter(new TestFragmentAdapter(getSupportFragmentManager()));

    //Bind to control buttons
    ((Button)findViewById(R.id.horizontal)).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            pager.setOrientation(DirectionalViewPager.HORIZONTAL);
        }
    });
    ((Button)findViewById(R.id.vertical)).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            pager.setOrientation(DirectionalViewPager.VERTICAL);
        }
    });
}
}

和例子中的代码一样,除了包名和主Activity的名字,所以我猜,我包含库的方式一定是错误的。

谢谢!

【问题讨论】:

    标签: android eclipse android-viewpager


    【解决方案1】:

    更新(2 月 14 日):这个库是一个非常好的选择。我目前在我的项目中使用它,它工作得很好。它仍在维护中,它是对来自支持库 r19 的标准 ViewPager 的非常接近的修改。另一个优点是,如果您使用 gradle,您可以通过 maven Central 轻松集成和解决它。

    https://github.com/castorflex/VerticalViewPager


    感谢 Oleg Vaskevich,我能够从当前的 git 文件和 oleg 的添加/修复中编译出一个新的和工作的 directionalViewpager jar 文件。 我可以确认它适用于当前的 support-lib v4 r11。

    https://dl.dropbox.com/u/24363935/android-directionalviewpager-1.2.1fixed.jar

    希望这对某人有用:)

    补充:我在 DirectionalViewPager.setAdapter(PagerAdapter adapter){...}; 中有一个 IllegalArgumentException。所以我已经修改和修复,重新编译并上传了新的jar。

    【讨论】:

    • 嗨,干得好!但是,将其包含在布局中时会出现错误,它说:(下一条评论)
    • 无法实例化以下类:- android.support.v4.view.DirectionalViewPager。 01-13 18:45:43.590: E/AndroidRuntime(4875): android.view.InflateException: Binary XML file line #15: Error inflating class fragment, java.lang.IllegalAccessError: 试图访问方法 android.support.v4。 view.ViewPager.initViewPager()V 来自 android.support.v4.view.DirectionalViewPager.initViewPager(DirectionalViewPager.java:136) 的 android.support.v4.view.DirectionalViewPager 类 android.support.v4.view.DirectionalViewPager.(DirectionalViewPager.java:123)。 有什么想法吗?
    • 我修好了,看来你不能使用 setPageTransformer(true, new ZoomOutPageTransformer());在 DirectionalViewpager...
    • 有办法解决这个问题吗?我认为我在 Android 方面的经验不足
    • 如果您收到此错误 java.lang.IllegalStateException: Recursive entry to executePendingTransactions 使用 getChildFragmentManager() :)
    【解决方案2】:

    由于对 ViewPager 的重大更改,开发人员弃用了 DVP。但是,这并不意味着它没有用。

    尝试直接下载源代码并将两个源文件包含在您的项目中。如果您使用的是最新的支持/兼容性库,则需要使用 android.database.DataSetObserver 而不是 ViewPager.DataSetObserver。希望这会有所帮助!

    应该可以工作的修改代码:https://dl.dropbox.com/u/21007282/Code/DirectionalViewPager-works.zip

    【讨论】:

    • 找不到类 ItemInfo
    • 确保您添加了适当的支持库 - 您需要访问 android.support.v4.view.ViewPager.ItemInfo
    • 也许这就是问题所在 - ViewPager.ItemInfo 可能已在最新的库中被删除。
    • 嘿,很惊讶这个答案仍然相关。这是一个希望更永久的要点:gist.github.com/vaskevich/0cebed87418478e44b3c80223ca53513
    【解决方案3】:

    在集成已存档的旧 Jake Wharton 项目时,我遇到了很多问题。我来到了这个 github 项目,它与最新的应用程序兼容/支持版本正确集成。希望它可以帮助某人。 Vertical as well as horizontal view pager swipe

    【讨论】:

      猜你喜欢
      • 2015-07-03
      • 2012-02-09
      • 2011-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-17
      • 1970-01-01
      • 2018-08-03
      相关资源
      最近更新 更多