質問

Androidアプリにいくつかのエラーレポートがあります。これは、アクティビティのoncreate()のnullpointerexceptionです。失敗するコードはgetIntent()。getExtras()。getStringExtra( "name")です。 (nullpointerexception)

つまり、getextras()はどういうわけかnullです。私は、意図を作成しているすべての場所で意図を余分に設定していると確信しています。デバイス上のエミュレータで再作成することはできません。アプリを再び開こうとした後、私の実際のデバイスでは(しかし、私がデバッグしている間はそうではありませんでした)、その間、Androidはおそらくプロセスを殺し、再びアクティビティを再現しました。しかし、このシナリオでもエキストラが維持されるべきではないでしょうか?

私はエミュレータでプロセスを殺そうとしましたが、OnCreateは再び呼び出され、GetExtras()が適切な値を返しました。

コードをgetIntent()に置き換えました。GetStringExtra()。それ以外の違いは、nullpointerexceptionを投げませんが、文字列をnullとして設定します。他に違いはありますか?

何がそれを引き起こしているのでしょうか?

役に立ちましたか?

解決 3

私のコードのどこか他の場所で、文字列[]が追加されたショートカットの意図を作成していることがわかりました。 Android Home(およびシステムの他の部分)は、String Arraysを使用せず、プリミティブエクストラのみ(int、string、long、float ...)。しかし、問題を引き起こしていたコードはショートカットを使用しません。これは、ストリングアレイを追加する単純なアクティビティにすぎません。空のエクストラもこの問題によって引き起こされたのかもしれません - アプリケーションはOSによって殺され、エクストラは保存できませんでした。この場合、Androidによって例外が投げられません。

ここでロマンの男によって説明されています:http://groups.google.com/group/android-developers/browse_thread/thread/7f2ce458bd5d112f/189e2b7b2b2532d7

ここでこれについてより具体的な質問をしました:再起動後に失われたショートカット意図エキストラ?

他のヒント

Intent.getStringExtra()は、エキストラがない場合にnullを返します。 Intent.getExtras()がnullを返している場合は、getString()またはその他のメソッドを呼び出す前に、それを確認する必要があります。

getIntent.getExtras()は、ある時点でnullを返しています。 getIntent()。getStringExtra()は、nullエクストラをチェックし、getextras()がnullの場合はnullを返すようにコード化されている可能性が最も高くなります。いわゆる「ノースロー」アーキテクチャ。もしそうなら、これは有効なランタイム実行であり、例外をスローしません。 NULLエクストラでGetStringExtraを呼び出すことは、有効なランタイム実行ではなく、例外をスローする必要があります。

getExtras()がnullであるパスがあるように見えるため、ヌルエキストラをチェックすることでこれをコードすることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top