将Android-DirectionalViewPager .jar包导入Eclipse时出现错误。

7
我正在尝试在我的应用程序中实现垂直滑动。 (就像使用 ViewPager 进行滑动一样,但是是垂直的)。
我发现了 Jake Wharton 的库 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);
        }
    });
}
}

这段代码和示例中的代码相同,除了包名和主活动的名称外,因此我猜测,我包含库的方式可能是错误的。

谢谢!

3个回答

19

更新(2月1日14):这个库是一个非常好的替代品。我目前正在我的项目中使用它,它运行得非常完美。它仍在被维护,并且它是支持库r19标准ViewPager的一个非常接近的修改。另一个优点是,如果你使用gradle,你可以很容易地通过maven central集成和解决它。

https://github.com/castorflex/VerticalViewPager


感谢Oleg Vaskevich,我能够从当前的git文件和Oleg的添加/修复编译出一个新的、可工作的directionalViewpager jar文件。我们可以确认它可以与当前支持库v4 r11一起工作。

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

希望这对某些人有用 :)

补充说明:我在DirectionalViewPager.setAdapter(PagerAdapter adapter){...}中遇到了IllegalArgumentException异常。所以我进行了修改和修复,并重新编译并上传了新的jar文件。


1
我已经修复了,显然你不能在DirectionalViewpager中使用setPageTransformer(true, new ZoomOutPageTransformer()); - A. Steenbergen
1
有没有办法解决这个问题?我认为我对安卓开发不够熟练。 - A. Steenbergen
有没有可能让页面转换器在方向性ViewPager中工作?修复起来很困难吗? - rupps
谢谢你的修复。然而,这个ViewPager似乎无法正确支持setOffscreenPageLimit(int i)方法 - 该方法似乎被忽略了。你有什么想法为什么会这样吗? - Sébastien BATEZAT
1
如果你遇到以下错误 java.lang.IllegalStateException: Recursive entry to executePendingTransactions,请使用 getChildFragmentManager() :) - yashhy
显示剩余10条评论

14

DVP由于ViewPager的重大变化已被开发人员弃用。然而,这并不意味着它没有用处。

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

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


无法找到类ItemInfo。 - Siddhesh
请确保您已添加适当的支持库 - 您需要访问 android.support.v4.view.ViewPager.ItemInfo - Oleg Vaskevich
也许这就是问题所在 - ViewPager.ItemInfo 可能已经在最新的库中被移除了。 - Oleg Vaskevich
嘿,惊讶这个答案仍然相关。这里有一个希望更加永久的Gist:https://gist.github.com/vaskevich/0cebed87418478e44b3c80223ca53513 - Oleg Vaskevich

0

在集成已归档的Jake Wharton旧项目时,我遇到了许多问题。后来我发现了这个Github项目,它可以与最新的app compat/support版本完美集成。希望能对某些人有所帮助。 垂直和水平视图翻页


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