Вопрос по android, eclipse, android-viewpager – Ошибка, включающая Android-DirectionalViewPager .jar в Eclipse

7

Я пытаюсь реализовать вертикальное смахивание в моем приложении. (Это так же, как ударяя сViewPager, но вертикально).

Я нашел библиотеку Джейка УортонаAndroid-DirectionalViewPager, Это автономный файл .jar, который должен быть включен в дополнение к библиотеке совместимости. Я включил файл в свой проект. Теперь он находится в разделе «Ссылочные библиотеки», как и библиотека совместимости.
Но проблема в том, что я даже не могу заставить работать пример с библиотекой. Отладчик останавливается на линии

setContentView(R.layout.main);

с "источник не найден"

LogCat выдает эту ошибку: "05-23 14: 43: 13.583: E / dalvikvm (329): не удалось найти класс" com.directionalviewpager.DirectionalViewPager & reg ;, на который ссылается метод own.vvp.MainActivity.onCreate & Quot;

Кто-нибудь уже использовал эту библиотеку? Мне нужна помощь :)

вот мой код:

манифест:

<?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);
        }
    });
}
}

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

Спасибо!

Ваш Ответ

2   ответа
14

er с тех пор. Однако это не означает, что это бесполезно.

Попробуйте загрузить исходный код напрямую и включить два исходных файла в свой проект. Если вы используете новейшую библиотеку поддержки / совместимости, вам необходимо использоватьandroid.database.DataSetObserver вместоViewPager.DataSetObserver, Надеюсь это поможет!

Модифицированный код, который должен работать:https://dl.dropbox.com/u/21007282/Code/DirectionalViewPager-works.zip

Убедитесь, что у вас есть соответствующая библиотека поддержки - вам нужен доступ кandroid.support.v4.view.ViewPager.ItemInfo.
у меня последняя версия
невозможно найти класс ItemInfo
Может быть, это проблема -ViewPager.ItemInfo мог быть удален в последней библиотеке.
19

Update (Feb 1st 14): Эта библиотека - действительно хорошая альтернатива. Я сейчас использую его в своем проекте, и он работает безупречно. Он все еще поддерживается, и это очень близкая модификация стандартного ViewPager из поддержки lib r19. Другое преимущество состоит в том, что вы можете легко интегрировать и разрешать его с помощью Maven Central, если вы используете Gradle.

https://github.com/castorflex/VerticalViewPager

Благодаря Олегу Васкевичу я смог скомпилировать новый и работающий jar-файл directionalViewpager из текущих файлов git и дополнений / исправлений oleg. Я могу подтвердить, что он работает с текущей версией support-lib v4 r11.

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

надеюсь, это кому-нибудь пригодится :)

добавить: у меня была исключительная ситуация IllegalArgumentException в DirectionalViewPager.setAdapter (адаптер PagerAdapter) {...} ;. Поэтому я изменил и исправил, перекомпилировал и загрузил новую банку.

Привет, отличная работа! Тем не менее, это дает мне ошибку при включении его в макет, он говорит: (следующий комментарий)
Я исправил это, по-видимому, вы не можете использовать setPageTransformer (true, new ZoomOutPageTransformer ()); в DirectionalViewpager ...
Круто, спасибо!
если вы получите эту ошибкуjava.lang.IllegalStateException: Recursive entry to executePendingTransactions использованиеgetChildFragmentManager() :)
Есть ли способ исправить это? Я думаю, что я не достаточно опытен в Android для этого

Похожие вопросы