国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Android のバグ - Android では、なぜインテントの初期化をメソッドの外に記述できないのですか?
伊謝爾倫
伊謝爾倫 2017-05-16 13:35:09
0
3
1023

初心者。今日、明示的なインテントを使用してアクティビティ間をジャンプするコードを作成しましたが、クラス內(nèi)でインテントのメンバー変數(shù)を定義し、それをメソッドで使用するとプログラムがクラッシュしました。これはなぜですか?

リーリー

コードは上記の通りですが、エラーメッセージは次のとおりです:

原因: java.lang.NullPointerException: 仮想メソッド「java.lang.String android.content.Context.getPackageName()」を呼び出そうとしました null オブジェクト參照

「null オブジェクト參照」で getPackageName() 仮想メソッドを呼び出すときにエラーが発生したと言われています。

最初は、これが空で問題が発生しているのではないかと思い、コードを変更しました:

リーリー

しかし、エラーは依然として発生し、エラーメッセージは同じままです。條件判斷により、これが空ではないことはわかっていますが、それでも null 參照と言われるのはなぜですか?

伊謝爾倫
伊謝爾倫

小伙看你根骨奇佳,潛力無限,來學(xué)PHP伐。

全員に返信(3)
phpcn_u1582

これを行う前に、まず ActivityContext之間的關(guān)系: 雖然Activity繼承了Context, 但是它卻不是真正的實現(xiàn)類, 真正的實現(xiàn)可能是ContextWrapper#getBaseContext()返されたオブジェクトに対応するクラスを理解する必要があります。

ActivityContextWrapper的子類, 所以我們先找到并打開ContextWrapper.javaソースコード、キーコードは次のとおりです:

リーリー

ContextWrapper里基于Context的調(diào)用都是直接使用mBase來間接實現(xiàn)調(diào)用的. 那么這個mBase是什么時候被賦值的呢? 找到并打開ActivityThread.java、キーコードが割り當(dāng)てられているコード部分を見つけることができます:

リーリー

上記のことから、以下のことがわかります: Activity時, ContextWrapper#getBaseContext()返回的是null, 因此, 不能在構(gòu)造函數(shù)或者構(gòu)造成員變量時直接調(diào)用與Context に関連する関數(shù)とクラスをインスタンス化して、必要に応じてライフサイクル関數(shù)で呼び出します。

伊謝爾倫

クラスはアクティビティ クラスを継承し、ライフ サイクルがあり、すべてのロジックはこれらのライフ サイクルで実行されます。つまり、一般に、ロジック コードはそれらのライフ サイクルのメソッドで記述される必要があります。 onCreate メソッドとそこにページを書き込むと、メソッドの識別子の命名も標(biāo)準(zhǔn)化されていません

。
Peter_Zhu

onCreate() メソッドをオーバーライドする必要があります

最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート