問題タブ [fragmenttransaction]
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.
android - FragmentTransactionは画面全体を置き換えます
FragmentStatePagedAdapterでタブを使用しています。以下のコードはonOptionsItemSelected(MenuItem item)
メソッドからのものです:
android.R.id.content
ただし、アクションバーの下のビューのみを置き換えます(そしてタブフラグメントの上にオーバーレイします)。そのための新しいアクティビティを作成せずに、画面全体をフラグメントに置き換える簡単な方法はありますか(そのための他のシステムリソースがあるべきではありませんか?)?それとも、新しい活動の方が実際に優れているでしょうか?
助けてくれてありがとう
コンテナレイアウト(MainActivityからの起動時に開始):
そして、これはHelpFragmentのクラスだと思います。
そしてフラグメントXML:
android - アクティビティの再作成時にフラグメントの復元を決定するにはどうすればよいですか?
IDを持っている場合View
、を呼び出すと自動的に保存されsuper.onSaveInstanceState(outState);
ます。
にFragment
追加されたsのActivity
場合、再作成時に再作成される場合Activity
(画面の回転など)と、再作成されない場合はどのようになりますか?何を決定しますか?ルールは何ですか?
これまでに、以下のケースを試しました。しかし、トライアルアンドエラーはルールや解決策を意味するものではありません。
Fragment
が再保存される場合:
- 通常の場合:
FragmentTransaction.add()
IDのあるレイアウトに。 - UIのないフラグメント:
FragmentTransaction.add()
タグのみ
Fragment
が復元されない場合:
super.onSaveInstanceState(outState);
スキップされたとき。Fragment
一致するIDなしでUIに復元されました。
一般的なルールは何ですか?ドキュメントで見逃したことはありますか?
前もって感謝します。
編集:
私の理解と実験では、動的に(プログラム的に)追加されたすべてのsは、呼び出しFragment
時に保存されます。Activity
super.onSaveInstanceState(outState)
- 動的に(プログラムで)追加されたすべて
Fragment
のsには、Fragment
sタグのみ(UIなし)、Fragment
に接続されているView
(UIを使用)、- および
Fragment
sはUIとタグの両方を備えています。 - (他にタイプはありますか?)
Fragment
UIを使用してIDが一致しないレイアウトに復元する場合、Fragment
実際に再作成されます。次の警告メッセージが表示され、レイアウトに視覚的に表示できません。
一致するIDを持つUIに戻ると、正しく復元されます。
私はまだいくつかの信頼できる参考文献とあなたの意見を楽しみにしています!
android - フラグメントトランザクションの競合状態が原因で、コンテナ内のAndroidの重複ビュー?
ここに簡単なプログラムがあります。「+」を押すと、リストに新しい番号が追加されます。LinearLayout
リストは、各番号でラベル付けされたボタンを含むものとして画面に表示されます。「+」を押すたびに、をクリアしてLinearLayout
から、各ボタンをフラグメントトランザクションに追加してコミットします。
したがって、プログラムの開始後に「+」を3回押すと、通常は次のようになります。
問題は、次のフラグメントトランザクションが前のフラグメントトランザクションと同時に実行されているように見える場合があることです。「+」を押すのが速すぎると、1つの番号に対して複数のボタンが表示されます。これはどのように見えるかです:
これが私のコードの主要部分です:
毎秒この睡眠をとるinit
と呼ばれるので、再現しやすくなります。
Field
ボタンが入った単なる断片です。メインアクティビティは単にCodeEditor
フラグメントを開始します。
私はちょうどアンドロイドのプログラミングを始めました。多分私が理解していないいくつかの基本があります。おそらく、トランザクションはある種の並行性を意味しますが、私が知る限り、どこにも並行性があってはなりません。この競合状態のような動作はどのように発生する可能性がありますか?私は何が間違っているのですか?私のボタンはフラグメントでラップされており、CodeEditor
フラグメントに追加されています。これは、実際のプログラムがより複雑であるため(これは縮小された例です)、ネストされたフラグメントを使用するのは理にかなっています。
完全なコードはここにあります。
android - これは、API 11のレベルより下でListFragmentとFragmentTransactionを使用することは可能ですか?
どんな体でも、APIレベル11未満でフラグメントを使用するのに役立ちます。
developer.androidはリストフラグメントとトランザクションフラグメントを提供しますが、APIレベル11で追加されています。
Froyo(2.2)でフラグメントを使用する方法(ListViewフラグメントを実装したい)。
android - WebView inside SherlockFragment - FragmentTransaction.Detach() does not remove the webview
I am using ActionBarSherlock's action bar tabs in my application with each tab populated by a single fragment inside a SherlockActivity Tabs
.
One of my Tabs contains a fragment, FragmentHome
, with a list of news articles. When an article is selected, FragmentHome
is replaced by another fragment, FragmentNews
.
FragmentNews just contains a webview to load the selected article. The article is loaded fine. I override the onBackPressed
in my activity so that FragmentHome
is reattached and FragmentNews
is removed.
While there are no errors, the webview inside FragmentHome
is never removed from the view and overlaps with other fragments. (See screenshots)
Its weird because the same code works for a another SherlockFragment
with ListView
in it but is messed up when using a WebView
. Here is the code to replace FragmentHome
with FragmentNews
initially:
Overriden onBackPressed in Tabs:
Snippet from FragmentNews
I have seen posts talking about FlashPlayer causing issues because of SurfaceView cutting a hole but I am just displaying simple webpages without any videos. Help highly appreciated.