java.lang.RuntimeException: Échec de remise résultat ResultInfo{qui=null, demande=1888, résultat=0, data=null} à l'activité
Mon application permet à l'utilisateur d'appuyer sur un bouton, il ouvre la caméra, ils peuvent prendre une photo et il s'affichera dans une imageview. Si l'utilisateur appuie sur le dos ou sur annuler lorsque la caméra est ouverte, j'obtiens cette force close - Échec de remise résultat ResultInfo{qui=null, demande=1888, résultat=0, data=null} à l'activité... donc je suppose que le résultat=0 est la question de ce que j'ai besoin d'insérer de faire de cet arrêt de la force de fermeture?
Ci-dessous mon code. Je sais que je vais oublier quelque chose, mais juste ne peux pas le comprendre! (Certes je suis environ 2 semaines dans l'apprentissage du développement android). Merci pour toute aide!
private static final int CAMERA_REQUEST = 1888;
private ImageView imageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.imageView = (ImageView)this.findViewById(R.id.photostrippic1);
ImageView photoButton = (ImageView) this.findViewById(R.id.photostrippic1);
photoButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(photo);
}
Je suppose que j'aurais besoin d'un "autre chose", quelque part, mais je n'ai pas exactement savoir faire.
ci-dessous est le logcat
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1888, result=0, data=null} to activity {photo.booth.app/photo.booth.app.PhotoboothActivity}: java.lang.NullPointerException
at android.app.ActivityThread.deliverResults(ActivityThread.java:2934)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:2986)
at android.app.ActivityThread.access$2000(ActivityThread.java:132)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1068)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4293)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at photo.booth.app.PhotoboothActivity.onActivityResult(PhotoboothActivity.java:76)
at android.app.Activity.dispatchActivityResult(Activity.java:4108)
at android.app.ActivityThread.deliverResults(ActivityThread.java:2930)
... 11 more
- Dans mon cas , l'erreur a eu lieu en raison de la garantie en cas de rotation de l'option " Ne pas garder activités en option développeur 🙂
Vous devez vous connecter pour publier un commentaire.
L'ajout de cette première conditionnelle devrait fonctionner:
Pour Kotlin les Utilisateurs n'oubliez pas d'ajouter ? dans
data: Intent?
comme
Si l'utilisateur d'annuler la demande, les données seront retournées comme
NULL
. Le thread va jeter unnullPointerException
lorsque vous appelezdata.getExtras().get("data");
. Je pense que vous avez juste besoin d'ajouter une condition pour vérifier si les données retournée est null.Je recommande d'utiliser ce:
Récupérer le père
Intent
.Transmettre le message directement.
Cela empêche la perte de son activité, ce qui permettrait de dégager une valeur null erreur de données.
Pour Kotlin Utilisateurs
Vous avez juste besoin d'ajouter ? avec l'Intention de
onActivityResult
que les données peuvent êtrenull
si l'utilisateur annule l'opération ou quelque chose va mal. Nous avons donc besoin de définir les données quenullable
dansonActivityResult
Il suffit de remplacer
onActivityResult
signature de SampleActivity avec ci-dessous:Vous pouvez vérifier si le resultCode est égal à RESULT_OK ce ne sera le cas que si une photo est prise et sélectionné et tout a fonctionné. Si la clause ici doit vérifier toutes les conditions.
c'est mon cas
startActivityForResult(intent, PICK_IMAGE_REQUEST);
J'ai défini deux demande de code
PICK_IMAGE_REQUEST
etSCAN_BARCODE_REQUEST
avec la même valeur, par exemple.static final int BARCODE_SCAN_REQUEST = 1;
static final int PICK_IMAGE_REQUEST = 1;
cela pourrait aussi à l'origine du problème
J'ai eu ce message d'erreur s'affichent pour moi parce que j'ai été en utilisant le réseau sur le thread principal et les nouvelles versions d'Android ont une "stricte" de la politique pour l'en empêcher. Pour la contourner, il suffit de jeter tout ce réseau de connexion d'appel dans un AsyncTask.
Exemple:
J'ai aussi rencontré à cette question, je l'ai résolu grâce à l'ajout de deux conditions:
l'autre est:
Mon problème était dans le appelé l'activité, quand il essaie de revenir à l'activité précédente par "de la finition." J'étais la configuration incorrecte de l'intention. Le code suivant est Kotlin.
J'ai fait ça:
Lorsque j'aurais dû faire ceci:
J'ai été confronté à ce problème quand j'ai essayé de passer un serializable modèle objet. À l'intérieur de ce modèle, un autre modèle a été une variable, mais qui n'est pas sérialisable. C'est pourquoi je fais face à ce problème. Assurez-vous que tous les modèle à l'intérieur d'un modèle est sérialisable.
Vérifier Clé De Réponse 2018