针对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 Gridview OnScrollListener ScrollUp和ScrollDown事件
- Android JSOUP ExceptionInInitializerError
- Android ListView thumb ScrollBar
- Android Proguard ExceptionInInitializerError和RuntimeException
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事件
当我向下滚动时,我想找到最后一个可见位置,例如int index = GridView.getLastVisiblePosition();
当我向上滚动时,我想找到第一个可见位置,例如int index = GridView.getFirstVisiblePosition();
我知道我可以使用以下代码,但我不确定如何以及在何处为ScrollUp和ScrollDown编写代码.请帮我.我是Android新手.
private OnScrollListener onAnsweRSScrolled = new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view,int scrollState) { } }
解决方法
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
错误:
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,情况相同.
解决方法
-keep class org.jsoup.**
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的代码,因为我认为它与快速拇指滚动条的样式无关.如果需要,我也可以发布该代码.
解决方法
<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
我想混淆我的.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的相关知识,请在本站寻找。
本文标签: