GVKun编程网logo

android – initializeScrollbars是未定义的?(android:initorder)

23

针对android–initializeScrollbars是未定义的?和android:initorder这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展AndroidGridviewOn

针对android – initializeScrollbars是未定义的?android:initorder这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Android Gridview OnScrollListener ScrollUp和ScrollDown事件、Android JSOUP ExceptionInInitializerError、Android ListView thumb ScrollBar、Android Proguard ExceptionInInitializerError和RuntimeException等相关知识,希望可以帮助到你。

本文目录一览:

android – initializeScrollbars是未定义的?(android:initorder)

android – initializeScrollbars是未定义的?(android:initorder)

背景

我正在使用this library,其中一个类(从ViewGroup扩展),在“PLA_AbsListView.java”中,在CTOR中,有这些行:

    final TypedArray a = context.obtainStyledAttributes(R.styleable.View);
    initializeScrollbars(a);
    a.recycle();

最近,我更新了SDK& Android的ADT支持新的Android版本(Lollipop – API21).

问题

自从我更新了所有内容后,我不断收到此错误:

The method initializeScrollbars(TypedArray) is undefined for the type PLA_AbsListView

我试过的

我试图将API设置为低于21,但它没有帮助.

我也试图找出声明这个函数的位置.它应该是“View.java”中的受保护功能,但出于某种原因,我在the documentations中看不到它

这个问题

怎么会这样?

我该如何解决?

这可能是文档中的错误吗?

以前,当针对Kitkat时它起作用了……

解决方法:

来自android-21的View.java来源:

/**
 * ...
 *
 * @removed
 */
protected void initializeScrollbars(TypedArray a) {
    // It's not safe to use this method from apps. The parameter 'a' must have been obtained
    // using the View filter array which is not available to the SDK. As such, internal
    // framework usage Now uses initializeScrollbarsInternal and we grab a default
    // TypedArray with the right filter instead here.
    TypedArray arr = mContext.obtainStyledAttributes(com.android.internal.R.styleable.View);

    initializeScrollbarsInternal(arr);

    // We ignored the method parameter. Recycle the one we actually did use.
    arr.recycle();
}

/**
 * ...
 *
 * @hide
 */
protected void initializeScrollbarsInternal(TypedArray a) {

您没有看到它,因为该方法是使用@removed注释的. initializeScrollbarsInternal()也不能使用,因为它是用@hide注释的.
从评论开始,使用此方法并不安全,您应该将其报告给lib的作者.

Android Gridview OnScrollListener ScrollUp和ScrollDown事件

Android Gridview OnScrollListener ScrollUp和ScrollDown事件

我有gridview,我需要做两件事:

当我向下滚动时,我想找到最后一个可见位置,例如int index = GridView.getLastVisiblePosition();

当我向上滚动时,我想找到第一个可见位置,例如int index = GridView.getFirstVisiblePosition();

我知道我可以使用以下代码,但我不确定如何以及在何处为ScrollUp和ScrollDown编写代码.请帮我.我是Android新手.

private OnScrollListener onAnsweRSScrolled = new OnScrollListener() {

    @Override
    public void onScrollStateChanged(AbsListView view,int scrollState) {
    }
}

解决方法

在你的活动中创建全局变量myLastVisiblePos,并为每个FirstVisiblePosition保存,当onScroll事件检查当前FirstVisiblePosition时保存的FirstVisiblePosition如果greate比上次保存的FirstVisiblePosition那么scrollUp如果小则滚动:
int myLastVisiblePos;// global variable of activity

//save first value when you create GridView
GridView gridView = (GridView) gv.findViewById(R.id.grid_view);
myLastVisiblePos = gridView.getFirstVisiblePosition();

gridView.setonScrollListener( new OnScrollListener() {
    @Override
    public void onScroll(AbsListView view,int firstVisibleItem,int visibleItemCount,int totalItemCount) {
            int currentFirstVisPos = view.getFirstVisiblePosition();
            if(currentFirstVisPos > myLastVisiblePos) {
                //scroll down
            }
            if(currentFirstVisPos < myLastVisiblePos) {
                //scroll up
            }
            myLastVisiblePos = currentFirstVisPos;
    }
});

Android JSOUP ExceptionInInitializerError

Android JSOUP ExceptionInInitializerError

我用amigo库更新了我的dex类(它改变了一个apk,用另一个apk和相同的密钥和签名,除了JSOUP之外都工作了)

错误:

FATAL EXCEPTION: Thread-1567
Process: com.smedic.tubtub,PID: 26102
java.lang.ExceptionInInitializerError
at org.jsoup.nodes.Document$OutputSettings.(Document.java:372)
at org.jsoup.nodes.Document.(Document.java:19)
at org.jsoup.parser.TreeBuilder.initialiseParse(TreeBuilder.java:32)
at org.jsoup.parser.TreeBuilder.parse(TreeBuilder.java:42)
at org.jsoup.parser.HtmlTreeBuilder.parse(HtmlTreeBuilder.java:56)
at org.jsoup.parser.Parser.parseInput(Parser.java:32)
at org.jsoup.helper.DataUtil.parseByteData(DataUtil.java:104)
at org.jsoup.helper.httpconnection$Response.parse(httpconnection.java:666)
at org.jsoup.helper.httpconnection.get(httpconnection.java:225)
at com.power.mati.VideosAdapter$4.run(VideosAdapter.java:177)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.IllegalStateException: Could not read resource
entities-xhtml.properties. Make sure you copy resources for
org.jsoup.nodes.Entities
at org.jsoup.nodes.Entities.load(Entities.java:289)
at org.jsoup.nodes.Entities.access$000(Entities.java:25)
at org.jsoup.nodes.Entities$EscapeMode.(Entities.java:48)

知道怎么解决吗?

我正在使用罐子和maven,情况相同.

解决方法

我看到类似的东西,我的解决方案是在proguard
-keep class org.jsoup.**

Android ListView thumb ScrollBar

Android ListView thumb ScrollBar

我想看到以下拇指滚动条:

http://www.androidpatterns.com/uap_pattern/scroll-thumb

我所看到的是:

我的XML布局是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <com.google.ads.AdView
        android:id="@+id/adView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        ads:adSize="SMART_BANNER"
        ads:adUnitId="xxaassss"
        ads:loadAdOnCreate="true" >
    </com.google.ads.AdView>

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:divider="#b5b5b5"
        android:dividerHeight="1dp"
        android:listSelector="@drawable/list_selector" />

</LinearLayout>

我的Java代码在onCreate of Activity类中(我从Activity类扩展而不是ListActivity):

super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
ListView list=(ListView)findViewById(R.id.list);
ArrayList<HashMap<String,String>> categoriesList = new ArrayList<HashMap<String,String>>();

        for(int i=0;i<119;i++) {
            HashMap<String,String> map = new HashMap<String,String>();
            map.put(KEY_ID,String.valueOf(i));
            //map.put(KEY_TITLE,"hello");
            map.put(KEY_TITLE,Prayer.tip.getNthLine(i,true).replace("~",""));
            map.put(KEY_ARTIST,"");
            map.put(KEY_DURATION,"");
            map.put(KEY_THUMB_URL,String.valueOf(getResources().getIdentifier("img" + i,"drawable",getPackageName())));
            categoriesList.add(map);

        }
        LazyAdapter adapter=new LazyAdapter(this,categoriesList);
        list.setAdapter(adapter);

        list.setFastScrollEnabled(true);

我没有发布LazyAdapter的代码,因为我认为它与快速拇指滚动条的样式无关.如果需要,我也可以发布该代码.

解决方法

像这样更改你的xml代码

<com.google.ads.AdView
    android:id="@+id/adView"`enter code here`
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ads:adSize="SMART_BANNER"
    ads:adUnitId="xxaassss"
    ads:loadAdOnCreate="true" >
</com.google.ads.AdView>

<ListView
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:divider="#FFF"
    android:fadeScrollbars="false"android:scrollX="0px"
    android:scrollY="0px"
    android:scrollbaralwaysDrawVerticalTrack="true"
    android:scrollbarSize="20dp"
    android:scrollbarandroid:scrollbars="vertical" />

并以你的风格

<style name="CustomTheme" parent="android:Theme">
<item name="android:scrollbarTrackVertical">@drawable/scroll_track</item>
<item name="android:scrollbarThumbVertical">@drawable/scroll_thumb</item>

喜欢在清单中

< application android:icon =“@ drawable / icon”android:label =“@ string / app_name”android:theme =“@ style / CustomTheme”>

Android Proguard ExceptionInInitializerError和RuntimeException

Android Proguard ExceptionInInitializerError和RuntimeException

我想混淆我的.apk,我和Proguard有些麻烦.使用eclipse我启用了这个:

# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

我正在使用4个外部库:

> android-support-v4.jar
>九岁的android-lib.jar
> gson-2.2.2.jar
> commons-io-2.4.jar

我想我在使用gson时遇到了麻烦:

private static Type MY_DATA_TYPE = new Typetoken<Pair<Map<Point, Void>, Integer>>() {}.getType();

我每次使用它:

FATAL EXCEPTION: main
java.lang.ExceptionInInitializerError at com.myapp.MyActivity.onCreate(UnkNown Source)

...

Caused by: java.lang.RuntimeException: Missing type parameter.
at com.google.gson.reflect.Typetoken.getSuperclasstypeParameter(UnkNown Source)
at com.google.gson.reflect.Typetoken.<init>(UnkNown Source)

我正在使用这个选项,但我想它不会有帮助:

-keepattributes Exceptions, InnerClasses, *Annotation*, EnclosingMethod

-dontskipnonpubliclibraryclassmembers
-libraryjars .../libs/android-support-v4.jar
-libraryjars .../libs/nine-old-android-lib.jar
-libraryjars .../libs/gson-2.2.2.jar
-libraryjars .../libs/commons-io-2.4.jar


-keep class java.** { *; }
-keep class android.** { *; }
-keep class org.** { *; }
-keep class com.google.** { *; }
-keep class com.facebook.** { *; }
-keep class com.nineoldandroids.** { *; }

我该如何解决这个问题并创建一个可以正常工作的混淆的.apk?
谢谢你的时间.

解决方法:

猜猜这是一个gson“问题”,这是解决方案:

-keepattributes Signature
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.examples.android.model.** { *; }

感谢https://groups.google.com/forum/#!topic/google-gson/6XuHfOoZIKo

关于android – initializeScrollbars是未定义的?android:initorder的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Android Gridview OnScrollListener ScrollUp和ScrollDown事件、Android JSOUP ExceptionInInitializerError、Android ListView thumb ScrollBar、Android Proguard ExceptionInInitializerError和RuntimeException的相关知识,请在本站寻找。

本文标签: