問題タブ [fragmentmanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1700 参照

java - java.lang.IllegalStateException: 日付ピッカー ダイアログの作成時にアクティビティが破棄されました

を使用して、メインのアクティビティから DatePicker ダイアログを作成しようとしていますDialogFragments。DialogFragment クラスを拡張し、新しい datePickerDialog を次のように返します。

http://developer.android.com/guide/topics/ui/controls/pickers.html

ここに私のクラスコードがあります:

ダイアログを起動するメインのアクティビティにボタンがあります。

ただし、ボタンをクリックしようとすると、次の行で「java.lang.IllegalStateException: アクティビティが破棄されました」という例外が発生します。

アクティビティ ログは次のとおりです。

これに関するヘルプは本当に感謝しています。

ありがとう。

0 投票する
2 に答える
17453 参照

android - ナビゲーションドロワーのアイテムをクリックしてさまざまなアクティビティを開く方法は?

私はちょうど新しいアプリを起動し、最初にナビゲーション ドロワー オプションを選択します。Eclipse IDE はナビゲーション ドロワーの完全なコードを提供し、それも実行されています。

しかし、そのアイテムをクリックした後は、 xml に存在する数値をインクリメントするだけです。

スライドメニューをクリックしてさまざまなアクティビティを開きたいです。

コードでこれを編集する場所.5つの異なるxmlにリンクされた5つのクラスがあるとしましょう。ボタンのように、ナビゲーションドロワーのアイテムをクリックして画面上でそれらを膨らませるにはどうすればよいですか. 私はこの plz の初心者です。私をガイドして、どこで編集できるか教えてください。

MainActivity.java

NavigationDrawerFragment.java

0 投票する
1 に答える
72 参照

android - FragmentManager and ScreenOrientationChanging

I have 1 activity, 2 layouts for both portrait and landscape and 2 fragments.

in portrait layout there is only 1 fragment, in landscape there are 2 fragments stand together.

when I run the activity as portrait mode at the beginning, fragmentmanager says there is only 1 fragment which is ok. Then I change the orientation and fragmentmanager says there are 2 fragments anymore which is also ok. But even though I change the orientation from landscape to portrait fragmentmanager still says there are 2 fragments. The question is that does it need to remove all fragments it has with every new oncreate? How to provide there should just 1 fragment everytime if activity creates with portrait layout?

0 投票する
1 に答える
163 参照

android - Fragment の置換時にアクティビティが破棄されている

私は Android が初めてで、独自の View クラスの作成などについて学ぶために、簡単なダミー アプリを作成しようとしています。なぜ私はこれをしているのですか?アクションバーのボタンを押すことでナビゲートできる複数のページで構成される UI が必要でした。ここで、タッチ ジェスチャによるナビゲーション機能を追加したいと考えました。次に、このダミーアプリで解決しようとしていた問題に直面しました。これは、元のアプリと同じですが、少し単純です。

以前の)問題:フラグメントには、クリックするとタッチジェスチャを食べるスクロールビューが片側にあります。

私はこれについて読んで、独自の FrameLayout を作成し、onInterceptTouchEvent メソッドと onTouchEvent メソッドを @Override する必要があることを理解しました。この新しい FrameLayout を Fragment Container として使用しています。それでも、(このコードサンプルのように) LinearLayout の代わりに FragmentLayout の ScrollView を使用してアプリをテストすると、まだ正しく動作しません。しかし、現時点では、これは私の最大の問題ではありません.2つの方法を思い通りに機能させるには、少しだけ作業する必要があると思います.

この時点で、フラグメントがタッチ ジェスチャで交換されているときにアプリがクラッシュします... ボタンは引き続き機能します。

私はこのエラー(LogCat)を取得しています:

これは私の MainActivity です:

これは私の DummyFragmentSimpleView (Java) です:

シンプル ビューの XML は次のとおりです。

そして、これは私の TouchInterceptingLayout クラスです:

MotionEventHandler クラス:

activity_main.xml:

誰かが助けてくれることを願っています。私の問題の説明が混乱しすぎていないこと、そして私の問題があまりにもばかげていないことを願っています... ;s

前もって感謝します!

0 投票する
0 に答える
665 参照

android - バックスタックからプッシュおよびポップアウトされたときの Fragment の UI 状態の保存と復元

バックグラウンド:

私には mainがあり、変更可能Activityな main をラップしています。Fragmentバックスタックを保持するために、 のバックスタックを使用していますFragmentManager

アクティビティ スタックを維持することとの主な違いは、フラグメントがバックスタックにプッシュされて置き換えられると、それは呼び出されますが、それは呼び出されonDestroyView()onDestroy()、返されるとビューが で再作成されることonCreateView()です。(ただしonCreate()、フラグメント オブジェクトが破棄されないため、呼び出されません)

アクティビティ スタックでは発生せず、ビューは残ります。

Android OS はメモリをいくらか解放でき、ビューを正しく維持する必要がないため (私のアプリでは、サーバーからのメッセージがいつでもビューを変更する可能性があります)、貴重なデータを節約できるため、これはローエンド デバイスにプラスの効果があります。帯域幅も。

実際の問題:

フラグメントがあり、ユーザーが何かをクリックすると、ビューが変更されたとします。たとえば、リストが展開されます。

その後、ユーザーが別の画面 (つまりフラグメント) に移動すると、前のフラグメントがバックスタックにプッシュされ、そのビューが破棄されます。

ユーザーが元に戻ると、フラグメントが再作成され、ユーザーが行った変更を「記憶」しません。たとえば、リストが適切に展開されません。

では、すべてのビューに特別なケースを作成せずに、状態を保存して復元するにはどうすればよいでしょうか?

望ましくない回答:

  • ビューを維持する: ビューを維持するために何かを行うと、フラグメントの効率が低下します
  • using onSaveInstanceState(): アクティビティが破棄されておらず、構成の変更ではないため、フラグメントがバックスタックにプッシュされたときに呼び出されません。
  • 特別なオブジェクト: システムがそれを実行できる方法がある場合は、実行しないことをお勧めします。