本篇文章给大家谈谈AndroidFragmentManagerBackStackRecord.run引发NullPointerException,以及androidnullable的知识点,同时本文还
本篇文章给大家谈谈Android FragmentManager BackStackRecord.run引发NullPointerException,以及android nullable的知识点,同时本文还将给你拓展android FragmentManager replace 报 java.lang.IllegalArgumentException: No view found for id、Android HttpUrlConnection getInputStream引发NullPointerException、Android log cat显示android.content.pm.PackageManager $NameNotFoundException:应用程序包com.google.android.ba、Android log cat显示android.content.pm.PackageManager $NameNotFoundException:应用程序包com.google.android.backup等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- Android FragmentManager BackStackRecord.run引发NullPointerException(android nullable)
- android FragmentManager replace 报 java.lang.IllegalArgumentException: No view found for id
- Android HttpUrlConnection getInputStream引发NullPointerException
- Android log cat显示android.content.pm.PackageManager $NameNotFoundException:应用程序包com.google.android.ba
- Android log cat显示android.content.pm.PackageManager $NameNotFoundException:应用程序包com.google.android.backup
Android FragmentManager BackStackRecord.run引发NullPointerException(android nullable)
使用片段时,有时会出现以下异常:
FATAL EXCEPTION: mainjava.lang.NullPointerException at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:591) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:420) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method)
当通过尝试从管理器中删除片段时run()
,BackStackRecord
会通过调用of
发生异常execPendingTransactions()
。
case OP_REMOVE: { Fragment f = op.fragment; f.mNextAnim = op.exitAnim; <---- mManager.removeFragment(f, mTransition, mTransitionStyle);}break;
我似乎无法弄清楚到底是什么原因造成的?我认为这与删除碎片时未正确清理碎片的堆栈有关。
答案1
小编典典回答我自己的问题:
(最终)在您致电FragmentTransaction.remove(null);
和FragmentTransaction.commit();
编辑:而且,就像两次圈出和ShinyuX在评论中指出的一样; 当调用show(null)
oradd(null)
,attach(null)
and detach(null)
方法时,可能还hide(null)
调用后commit()
,事务将在FragmentManager中排队。结果,当您在显式调用后正在处理该操作时FragmentManager.executePendingTransactions()
,或者在FragmentManager队列线程对其进行调用时,它将引发NullPointerException
。
就我而言,我是在全局对象中维护碎片状态。在那里,我检查了片段是否显示,然后删除了可见的片段。但是因为我启动了一个新的FragmentActivity,所以这些状态在不可见时仍设置为true。所以这是一个设计错误。
除了解决设计错误外,解决方案还很简单:在删除片段之前检查是否FragmentManager.findFragmentByTag()
返回null
。
android FragmentManager replace 报 java.lang.IllegalArgumentException: No view found for id
问题:
layout 中使用了 include,通过 FragmentManager 的 replace 把 include 的子 Framelayout 作为 fragment container。由于 include 标签设置了 id(开启 ViewBinding 需要)而且与 include layout 布局中的根布局 id 不一样。在执行 replace 时报找不到 container id: java.lang.IllegalArgumentException: No view found for id
解决办法:
办法一:replace 参数 container id 直接设置成 include 标签的 id
办法二:在 include layout 子布局中再套一层布局,最外层布局不要设置 id 或者不要设置成 replace container id
Android HttpUrlConnection getInputStream引发NullPointerException
我正在尝试从以下网址下载图像:
https://hme_player_pictures.s3.amazonaws.com/test-512813ed3b83286c72f376c7-thumb100.jpg
这是堆栈跟踪:
03-21 12:58:04.040: W/System.err(7084): java.lang.NullPointerException
03-21 12:58:04.040: W/System.err(7084): at libcore.net.http.httpconnection$Address.hashCode(httpconnection.java:343)
03-21 12:58:04.045: W/System.err(7084): at java.util.HashMap.get(HashMap.java:298)
03-21 12:58:04.050: W/System.err(7084): at libcore.net.http.httpconnectionPool.get(httpconnectionPool.java:67)
03-21 12:58:04.050: W/System.err(7084): at libcore.net.http.httpconnection.connect(httpconnection.java:128)
03-21 12:58:04.050: W/System.err(7084): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
03-21 12:58:04.055: W/System.err(7084): at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:460)
03-21 12:58:04.055: W/System.err(7084): at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:432)
03-21 12:58:04.055: W/System.err(7084): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
03-21 12:58:04.060: W/System.err(7084): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
03-21 12:58:04.065: W/System.err(7084): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
03-21 12:58:04.065: W/System.err(7084): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
03-21 12:58:04.070: W/System.err(7084): at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:270)
03-21 12:58:04.070: W/System.err(7084): ...
码:
URL imageUrl = new URL(url);
HttpURLConnection c = (HttpURLConnection)imageUrl.openConnection();
InputStream in = c.getInputStream(); // Nullpointer exception on this line, c is definitely not null, I debugged
无法弄清楚为什么会引发NullPointerException.上面的网址确实可以在浏览器中使用.
解决方法:
对于它的价值,我在Android HTTP库中看到很多错误.从条码扫描器中,我可以看到大约3500万人员的堆栈跟踪,因此,我想我已经看到了其中的一切.这是我们在下面的应用程序中发现并吞下的所有怪异内容.我建议您将其作为平台错误来解决,并优雅地失败.
https://code.google.com/p/zxing/source/browse/trunk/android/src/com/google/zxing/client/android/HttpHelper.java
private static int safelyConnect(String uri, HttpURLConnection connection) throws IOException {
try {
connection.connect();
} catch (NullPointerException npe) {
// this is an Android bug: http://code.google.com/p/android/issues/detail?id=16895
Log.w(TAG, "Bad URI? " + uri);
throw new IOException(npe.toString());
} catch (IllegalArgumentException iae) {
// Also seen this in the wild, not sure what to make of it. Probably a bad URL
Log.w(TAG, "Bad URI? " + uri);
throw new IOException(iae.toString());
} catch (SecurityException se) {
// due to bad VPN settings?
Log.w(TAG, "Restricted URI? " + uri);
throw new IOException(se.toString());
} catch (indexoutofboundsexception ioobe) {
// Another Android problem? https://groups.google.com/forum/?fromgroups#!topic/google-admob-ads-sdk/U-WfmYa9or0
Log.w(TAG, "Bad URI? " + uri);
throw new IOException(ioobe.toString());
}
try {
return connection.getResponseCode();
} catch (NullPointerException npe) {
// this is maybe this Android bug: http://code.google.com/p/android/issues/detail?id=15554
Log.w(TAG, "Bad URI? " + uri);
throw new IOException(npe.toString());
} catch (NumberFormatException nfe) {
// Again seen this in the wild for bad header fields in the server response!
Log.w(TAG, "Bad server status? " + uri);
throw new IOException(nfe.toString());
}
}
Android log cat显示android.content.pm.PackageManager $NameNotFoundException:应用程序包com.google.android.ba
我是一个更新鲜的android,当我尝试在avd中运行我的应用程序时,在日志猫中发现以下异常,显示不幸的是我的应用程序无法运行,请帮助
android.content.pm.PackageManager$NameNotFoundException: Application package com.google.android.backup not found
at android.app.ContextImpl.createPackageContextAsUser(ContextImpl.java:2172)
at android.app.ContextImpl.createPackageContext(ContextImpl.java:2148)
at android.content.Contextwrapper.createPackageContext(Contextwrapper.java:671)
at com.google.android.gms.backup.an.<init>(SourceFile:47)
at com.google.android.gms.backup.BackupTransportMigratorService.f(SourceFile:248)
at com.google.android.gms.backup.BackupTransportMigratorService.b(SourceFile:196)
at com.google.android.gms.backup.BackupTransportMigratorService.onHandleIntent(SourceFile:131)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
我的android清单如下所示
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cornex.criminalintent" >
<application
android:allowBackup="true"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity android:name=".CrimeListActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".CrimePagerActivity"
android:label="@string/app_name" >
</activity>
</application>
解决方法:
要创建数据备份应用程序,您需要使用Google备份服务注册您的应用程序.这已在示例中解释.注册后,您必须在AndroidManifest.XML中指定其密钥
<application
android:allowBackup="true"
android:backupAgent="YOUR_BACKUP_AGENT">
<Meta-data
android:name="com.google.android.backup.api_key"
android:value="YOUR_API_KEY" />
</application>
Android提供BackUpAgentHelper类来处理数据备份的所有操作.要使用此类,您必须使用它扩展您的类.其语法如下:相应的备份代理可以实现,如下面的清单所示.
import android.app.backup.BackupAgentHelper;
public class YOUR_BACKUP_AGENT extends BackupAgentHelper {
}
要备份的持久性数据是两种形式之一.它可以是SharedPrefrences,也可以是File. Android在SharedPreferencesBackupHelper和FileBackupHelper各自的类中支持两种类型的备份.
要使用SharedPerefernceBackupHelper,您需要使用sharedPerefernces文件的名称实例化其对象.其语法如下 –
static final String File_Name_Of_Prefrences = "myPrefrences";
SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, File_Name_Of_Prefrences);
您需要做的最后一件事是通过指定备份密钥字符串和帮助程序对象来调用addHelper方法.其语法如下 –
addHelper(PREFS_BACKUP_KEY, helper);
addHelper方法将自动向给定数据子集添加帮助程序到代理程序的配置.
有关详细信息,请参阅this Tutorial和this article
Android log cat显示android.content.pm.PackageManager $NameNotFoundException:应用程序包com.google.android.backup
android.content.pm.PackageManager$NameNotFoundException: Application package com.google.android.backup not found at android.app.ContextImpl.createPackageContextAsUser(ContextImpl.java:2172) at android.app.ContextImpl.createPackageContext(ContextImpl.java:2148) at android.content.Contextwrapper.createPackageContext(Contextwrapper.java:671) at com.google.android.gms.backup.an.<init>(SourceFile:47) at com.google.android.gms.backup.BackupTransportMigratorService.f(SourceFile:248) at com.google.android.gms.backup.BackupTransportMigratorService.b(SourceFile:196) at com.google.android.gms.backup.BackupTransportMigratorService.onHandleIntent(SourceFile:131) at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135)
我的android清单如下所示
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cornex.criminalintent" > <application android:allowBackup="true" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".CrimeListActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name=".CrimePagerActivity" android:label="@string/app_name" > </activity> </application>
解决方法
<application android:allowBackup="true" android:backupAgent="YOUR_BACKUP_AGENT"> <Meta-data android:name="com.google.android.backup.api_key" android:value="YOUR_API_KEY" /> </application>
Android提供BackUpAgentHelper类来处理数据备份的所有操作.要使用此类,您必须使用它扩展您的类.其语法如下:相应的备份代理可以实现,如下面的清单所示.
import android.app.backup.BackupAgentHelper; public class YOUR_BACKUP_AGENT extends BackupAgentHelper { }
要备份的持久性数据是两种形式之一.它可以是SharedPrefrences,也可以是File. Android在SharedPreferencesBackupHelper和FileBackupHelper各自的类中支持两种类型的备份.
要使用SharedPerefernceBackupHelper,您需要使用sharedPerefernces文件的名称实例化其对象.其语法如下 –
static final String File_Name_Of_Prefrences = "myPrefrences"; SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this,File_Name_Of_Prefrences);
您需要做的最后一件事是通过指定备份密钥字符串和帮助程序对象来调用addHelper方法.其语法如下 –
addHelper(PREFS_BACKUP_KEY,helper);
addHelper方法将自动向给定数据子集添加帮助程序到代理程序的配置.
有关详细信息,请参阅this Tutorial和this article
关于Android FragmentManager BackStackRecord.run引发NullPointerException和android nullable的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于android FragmentManager replace 报 java.lang.IllegalArgumentException: No view found for id、Android HttpUrlConnection getInputStream引发NullPointerException、Android log cat显示android.content.pm.PackageManager $NameNotFoundException:应用程序包com.google.android.ba、Android log cat显示android.content.pm.PackageManager $NameNotFoundException:应用程序包com.google.android.backup的相关知识,请在本站寻找。
本文标签: