私はAndroidでコーディングする方法を学習してきましたが、いくつか問題があります。getFragmentManager()は2回目の呼び出しでnullを返します
今、私は実際にFragment
の仕上げ方法を知らない。つまり、方法getActivity().finish()
を使用すると、Activity
はfinish()
になります。私はそれについて読んできましたが、それはまったく正しいものではありません。私は遭遇しましたthis post:
また、onDestroy()はデストラクタではありません。実際には オブジェクトは破棄されません。それは特定の状態に基づいて呼び出される単なる方法です。だから インスタンスがまだ生きていて、スーパークラスの のonDestroy()が実行されreturn.Androidが処理を続けると、ユーザーはアプリを再起動したいと考えているので、起動フェーズ が速くなります。このプロセスは何もされず、メモリを再利用すること に必要がある場合、プロセスは
そしてthis oneを殺される。
は、あなたがして、バックグラウンドアプリケーション、そしてそれを取得 殺したことを考えてみましょう。あなたが戻ってくると、 にフラグメントマネージャーのフラグメントA、B、Cがあることを覚えているので、 を再作成して追加します。 しかし、今度はフラグメントマネージャー に追加されたものは、あなたのフラグメント あなたの活動のリストにあるものではありません。
私の場合、2つのアクティビティと2つのフラグメントがあります。私がこのプロセスを初めて使用したとき、それは完全に機能しました。私は私が問題である二番目の
に最初Fragment
から呼び出す最初Fragment
Intent
Activity
に呼び出す
- ボタン "リセット"を押すと、
Activity
が2番目のFragment
から終了します(最初のActivity
になります)。この後、私は、全体のプロセスを繰り返し、それが実際に動作しますが、私は、データを更新し続けるために次の行を実装しようとすると:private BroadcastReceiver estadoIAReceiver = new BroadcastReceiver() { //Cuando cambia el estado de indoor atlas actualizo la interfaz con sus propiedades @Override public void onReceive(Context context, Intent intent) { Log.i("VFragment", "Cambio estado IA"); //Ejecutar metodo de un fragment desde una actividad infoF = (InformacionFragment) getFragmentManager().findFragmentById(R.id.posicionamiento_layout); infoF.actualizaInfoEstadoIA(); infoF.onResume(); } };
getFragmentManager().findFragmentById(R.id.posicionamiento_layout);
戻りnull
ので、それは失敗します。だから、基本的に私の質問です。初めてFragment
にアクセスしようとするとinfoF
ですが、存在しませんので、null
を返しますか?
私はあなたの質問を理解できないかもしれませんが、フラグメントがFragmentManagerにない場合(nullの場合)、フラグメントが破棄され、Fragmentmanagerから削除されたため新しいものを追加する必要があります –
時間(私はそれを実行する最初の時間の間、私は "null"を取得しないでください)。だから、なぜ私はそれを@ブライアンにするのか分からない。 –
あなたは@VladMatvienkoを意味すると思う。とにかく、もっとコードを表示してください。あなたが提供したコードには、 'getFragmentMangager()'が 'null'を返す理由を示すものは何もありません。また、次の行:「最初の「断片」から2番目の部分に電話する」は疑わしいと思う。一つの 'Fragment'から別の' Fragment'を呼び出すべきではなく、 'Activity'はフラグメント間のトランザクションを処理するべきです。 – Bryan