小编JMR*_*ies的帖子

Android ViewPager在设置当前项目/页面时抛出IndexOutOfBounds异常

我有一个包含三个项目的ViewPager.我正在尝试将ViewPager设置为查看最右边的页面(这将是第二个元素).这是返回一个IndexOutOfBounds异常,虽然我知道索引应该在边界内.这是完全堆栈:

02-22 12:22:50.256: E/AndroidRuntime(384): FATAL EXCEPTION: main
02-22 12:22:50.256: E/AndroidRuntime(384): java.lang.IndexOutOfBoundsException: index=1 count=0
02-22 12:22:50.256: E/AndroidRuntime(384):  at android.view.ViewGroup.addInArray(ViewGroup.java:2050)
02-22 12:22:50.256: E/AndroidRuntime(384):  at android.view.ViewGroup.addViewInner(ViewGroup.java:1994)
02-22 12:22:50.256: E/AndroidRuntime(384):  at android.view.ViewGroup.addViewInLayout(ViewGroup.java:1958)
02-22 12:22:50.256: E/AndroidRuntime(384):  at android.view.ViewGroup.addViewInLayout(ViewGroup.java:1939)
02-22 12:22:50.256: E/AndroidRuntime(384):  at android.support.v4.view.ViewPager.addView(ViewPager.java:917)
02-22 12:22:50.256: E/AndroidRuntime(384):  at android.view.ViewGroup.addView(ViewGroup.java:1828)
02-22 12:22:50.256: E/AndroidRuntime(384):  at us.tagverse.pagertest.MasterActivity$PAdapter.instantiateItem(MasterActivity.java:518)
02-22 12:22:50.256: E/AndroidRuntime(384):  at android.support.v4.view.PagerAdapter.instantiateItem(PagerAdapter.java:110)
02-22 12:22:50.256: E/AndroidRuntime(384):  at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:649)
02-22 12:22:50.256: E/AndroidRuntime(384):  at android.support.v4.view.ViewPager.populate(ViewPager.java:783)
02-22 12:22:50.256: E/AndroidRuntime(384):  at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1016)
02-22 12:22:50.256: E/AndroidRuntime(384):  at android.view.View.measure(View.java:8313)
02-22 12:22:50.256: E/AndroidRuntime(384):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
02-22 12:22:50.256: …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager

17
推荐指数
2
解决办法
1万
查看次数

Facebook SDK for Android抛出ClassNotFound异常

我的应用程序的最新版本偶尔会抛出此错误:

Caused by: java.lang.RuntimeException: Parcelable encounteredClassNotFoundException reading a Serializable object (name = com.facebook.friends.constants.FriendRequestMakeRef)
Run Code Online (Sandbox Code Playgroud)

这是堆栈下降到导致它的行:

   at android.os.Parcel.readSerializable(Parcel.java:2148)
   at android.os.Parcel.readValue(Parcel.java:2016)
   at android.os.Parcel.readMapInternal(Parcel.java:2226)
   at android.os.Bundle.unparcel(Bundle.java:223)
   at android.os.Bundle.getString(Bundle.java:1055)
   at android.content.Intent.getStringExtra(Intent.java:4426)
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,当我在Bundle上执行getStringExtra时,它会被抛出.看起来Facebook SDK正在向捆绑中添加一个对象,在阅读时,无法找到一个类然后崩溃.我在这条线上寻找的字符串与Facebook无关.

我很长一段时间没有改变任何与Facebook SDK相关的东西,但突然之间出现了这种情况.我把它归因于从旧的ANT样式编译到Gradle的切换,因为这是旧版本和这个新版本之间唯一的变化,导致错误.

无论如何,我四处搜索,发现没什么.更重要的是,我不会因为崩溃而责备它,我正在使用的Facebook SDK版本甚至没有包com.facebook.friends.constants

有没有人碰到这个?

android android-facebook

14
推荐指数
1
解决办法
685
查看次数

Widget RemoteViewsFactory for Content中的Android Permission拒绝

我有一个小部件,我试图用它来显示我的应用程序的本地数据库里面的listview信息.

我正在使用RemoteViewsService.RemoteViewsFactory接口来加载我的列表的内容.如果我运行在onDataSetChanged方法中重新加载列表的代码块.该应用程序崩溃时出现以下消息:

11-01 16:40:39.540: E/ACRA(27175): DataDisplay fatal error : Permission Denial: reading com.datadisplay.content.ContentProviderAdapter uri content://com.datadisplay.provider.internalDB/events from pid=573, uid=10029 requires the provider be exported, or grantUriPermission()

但是,在类的构造函数中运行的相同代码工作得很好.当然,我需要在onDataSetChanged方法中使用它来进行更新和填充.

这是我的提供者在清单中的条目:

    <provider android:name="com.datadisplay.content.ContentProviderAdapter"
        android:authorities="com.datadisplay.provider.internalDB"
        android:exported="true"
        android:enabled="true"
        android:grantUriPermissions="true">
            <grant-uri-permission android:pathPattern="/events/"/>
    </provider>
Run Code Online (Sandbox Code Playgroud)

我正在导出它并授予Uri权限,如错误消息请求,但它仍然失败.我发现了这个问题,这个人有问题,但最终删除了他的自定义权限,并且它有效.我没有这样的自定义权限,但仍然没有运气:

内容提供商的小部件; 不可能使用ReadPermission?

如果有人有洞察力,我会非常感激,这令人非常沮丧,哈哈.

android android-widget android-contentprovider android-permissions

13
推荐指数
3
解决办法
6342
查看次数

Android Holo Dialog有2个背景层叠在一起

在此输入图像描述

对话框看起来像这样.对话框后面有一层,每边约10-20个像素左右.我使用的主题是Theme.Holo.Dialog

我尝试使用透明背景创建自定义对话框,但这不起作用:

<style name="CustomHoloDialog" parent="@android:style/Theme.Holo.Dialog">
     <item name="android:background">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

有没有人对此有任何想法?

android

11
推荐指数
1
解决办法
2487
查看次数

Android Glide库不使用共享元素转换

我正在寻找采用Glide库代替Universal Image Loader,但我遇到了关于共享元素转换的问题.

在我简单的Sandbox中,我使用UIL创建了以下转换:https://dl.dropboxusercontent.com/u/97787025/device-2015-06-18-113333.mp4

非常简单,它工作正常.但是当我使用Glide时,它看起来并不那么好:https://dl.dropboxusercontent.com/u/97787025/device-2015-06-18-114508.mp4

这是我正在使用的代码

第一项活动:

public class MainActivity extends BaseActivity {

    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.main);

        final ImageView iv = (ImageView) findViewById(R.id.main_image);

        displayImageGlide(BaseActivity.IMAGE_URL, iv, true);

        Button button = (Button) findViewById(R.id.main_button);
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(), DifferentActivity.class);
                startActivity(intent, iv);
            }

        });
    }

}
Run Code Online (Sandbox Code Playgroud)

第二个:

public class DifferentActivity extends BaseActivity {

    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle); …
Run Code Online (Sandbox Code Playgroud)

android android-glide

11
推荐指数
2
解决办法
6577
查看次数

如何更新SQLite数据库而不丢失所有现有数据?

我正在为我的应用程序的SQLite DB添加一个表.我的所有语法都很好,而不是问题.但是我在创建新表时遇到了一些麻烦.我添加了新表....

@Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(DATABASE_CREATE);
            db.execSQL(CREATE_REQUESTS);
            db.execSQL(CREATE_OVERRIDE);
        }
Run Code Online (Sandbox Code Playgroud)

我的创建方法.我有3张桌子.当我更新版本号时,我收到一条错误消息"已经创建了表请求(指的是CREATE_REQUESTS)." 看看我的onUpgrade方法......

@Override 
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS contacts");
            onCreate(db);
        }
Run Code Online (Sandbox Code Playgroud)

让我理解,db.execSQL("DROP TABLE IF EXISTS contacts")在onCreate方法中引用我的DATABASE_CREATE表的行用于删除旧表,然后下一行onCreate(db);重新创建它.我没有向execSQL行添加请求,这是导致错误的原因.这是问题:我宁愿不丢失我已经拥有的两个表中的数据.有没有办法添加像我正在尝试做的表,而不是丢失所有旧数据?谢谢.

sqlite android

10
推荐指数
1
解决办法
6690
查看次数

Firebase SDK在接收广播意图时崩溃

在最近的更新中,我们开始看到来自Firebase的2次崩溃.这些崩溃都不是可重现的,并且它们很少发生,但经常足以引起我们的关注.第一个出现在Android 7上的99%(Android 5上为1%):

Fatal Exception: java.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x4000010 (has extras) } in com.google.firebase.iid.f@96947cd
       at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:1132)
       at android.os.Handler.handleCallback(Handler.java:751)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:154)
       at android.app.ActivityThread.main(ActivityThread.java:6119)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.net.NetworkInfo.isConnected()' on a null object reference
       at com.google.firebase.iid.zzad.zzchp(Unknown Source)
       at com.google.firebase.iid.zzae.onReceive(Unknown Source)
       at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:1122)
       at android.os.Handler.handleCallback(Handler.java:751)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:154)
       at android.app.ActivityThread.main(ActivityThread.java:6119)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Run Code Online (Sandbox Code Playgroud)

而这一款完全来自Android 8:

Fatal Exception: java.lang.RuntimeException: Error receiving broadcast Intent …
Run Code Online (Sandbox Code Playgroud)

android firebase

10
推荐指数
1
解决办法
1215
查看次数

我在SQLite(Android)中获得了数据库对象未关闭异常,但我明确关闭了我的数据库...帮助?

这是错误:

02-08 16:35:00.899:错误/数据库(468):android.database.sqlite.DatabaseObjectNotClosedException:应用程序未关闭此处打开的游标或数据库对象

除此之外,我是.以下是发生此问题的方法:

    public static void getUpdates(String username, Context context) {
    HttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost("http://10.0.2.2/tag/appgetfriendinfo.php");

    try {
        List<NameValuePair> nVPs = new ArrayList<NameValuePair>();
        nVPs.add(new BasicNameValuePair("username", username));

        httpPost.setEntity(new UrlEncodedFormEntity(nVPs));
        HttpResponse response = httpClient.execute(httpPost);

        ResponseHandler<String> rHandler = new BasicResponseHandler();
        String result = rHandler.handleResponse(response);

        JSONArray jArray = new JSONArray(result);
        for(int i = 0; i < jArray.length(); i++) {
            JSONObject jObj = jArray.getJSONObject(i);
            String userCheck = jObj.getString("username");
            TagDBAdapter dbHelper = new TagDBAdapter(context);
            dbHelper.open();//OPENING THE DATABASE
            Contact contact = …
Run Code Online (Sandbox Code Playgroud)

sqlite android

9
推荐指数
1
解决办法
2万
查看次数

正则表达式允许Java中的空格字符

嘿所有,所以我试图允许一些文本输入在发送之前通过正则表达式检查.我希望文本只包含AZ,0-9和空格""字符.这是我现在的代码:

if(!title.matches("[a-zA-Z0-9_]+") {
    //fail
}
else {
    //success
}
Run Code Online (Sandbox Code Playgroud)

然而,//fail当我输入"这是一个测试"之类的东西时,这仍然会给出结果

有任何想法吗?谢谢大家.

java regex

9
推荐指数
1
解决办法
5万
查看次数

Android:在proguard中重复类错误

编译我的应用程序时,我收到以下错误(编辑出的敏感路径)

Execution failed for task ':app:proguardDebug'.
> java.io.IOException: Can't write [/projects/app/build/intermediates/classes-proguard/debug/classes.jar] (Can't read [/.gradle/caches/modules-2/files-2.1/commons-codec/commons-codec/1.4/4216af16d38465bbab0f3dff8efa14204f7a399a/commons-codec-1.4.jar(;;;;;;!META-INF/MANIFEST.MF)] (Duplicate zip entry [commons-codec-1.4.jar:org/apache/commons/codec/binary/Base64.class]))
Run Code Online (Sandbox Code Playgroud)

这向我表明,编译器会看到应用程序尝试使用commons.codec.binary.Base64.class作为依赖项的两个位置.我再次检查并检查了我的库,但只有一个库(Amazon AWS)正在尝试使用它.

在这个错误之上,我得到了一些其他的警告,这些警告也为我引起了一个红旗:

Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [commons-lang3-3.1.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [commons-lang3-3.1.jar:META-INF/NOTICE.txt])
Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [commons-codec-1.4.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [commons-codec-1.4.jar:META-INF/NOTICE.txt])
Run Code Online (Sandbox Code Playgroud)

我根本没有在我的应用程序中明确使用commons-codec-1.4或commons-lang3-3.1,以为我以后在使用lang3之前将其删除.为什么在编译日志中引用它们?我的一个maven图书馆可以使用它们吗?我将在gradle文件中包含下面的maven库列表.

这是我的proguard和gradle文件供参考:

ProGuard的

-keep class org.w3c.dom.bootstrap.** { *; }
-keep class org.joda.time.** { *; }
-keep class com.facebook.** { *; }
-keep class org.apache.commons.** { *; } …
Run Code Online (Sandbox Code Playgroud)

android proguard gradle

9
推荐指数
1
解决办法
5140
查看次数