我有一个包含三个项目的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) 我的应用程序的最新版本偶尔会抛出此错误:
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
有没有人碰到这个?
我有一个小部件,我试图用它来显示我的应用程序的本地数据库里面的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

对话框看起来像这样.对话框后面有一层,每边约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)
有没有人对此有任何想法?
我正在寻找采用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) 我正在为我的应用程序的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行添加请求,这是导致错误的原因.这是问题:我宁愿不丢失我已经拥有的两个表中的数据.有没有办法添加像我正在尝试做的表,而不是丢失所有旧数据?谢谢.
在最近的更新中,我们开始看到来自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) 这是错误:
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) 嘿所有,所以我试图允许一些文本输入在发送之前通过正则表达式检查.我希望文本只包含AZ,0-9和空格""字符.这是我现在的代码:
if(!title.matches("[a-zA-Z0-9_]+") {
//fail
}
else {
//success
}
Run Code Online (Sandbox Code Playgroud)
然而,//fail当我输入"这是一个测试"之类的东西时,这仍然会给出结果
有任何想法吗?谢谢大家.
编译我的应用程序时,我收到以下错误(编辑出的敏感路径)
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)