フラグメントを下層のSurfaceViewに追加するにはどうすればよいですか?私はフラグメントを下層のSurfaceViewに追加
final GameSurface gs = new GameSurface(this);
setContentView(gs);
...私はこれではなく、私はカスタムsurfaceviewへの参照を設定により、このような
setContentView(R.layout.activity_main);
としてsetContentView内の任意のレイアウトを設定しないことだと思い例外
java.lang.IllegalArgumentException: No view found for id 0x7f0b0050
を取得します
次に、サーフェイスビューのコールバックオンタッチ(...) - ユーザーがサーフェスをクリックすると、フラグメントがロードされると想定されます。
事前にの@Override
public boolean onTouchEvent(MotionEvent event) {
.....
FragmentManager fragmentManager =((Activity)context).getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ExchangeFragment fragment = new ExchangeFragment();
fragmentTransaction.add(R.id.relLayout, fragment);
fragmentTransaction.commit();
おかげ
編集:
ませんクラッシュもはやなく、フラグメントが文句を言わないに表示されます。どうして? @Kelevandosのおかげで、別のスタックスレッドである
How to inflate one view with a layout
の答えは、私はカスタムsurfaceViewsコンストラクタにAttributSetを追加するhade。
何が欠けていますか?ここでは、XMLファイルを編集2
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<se.brickgame.brickbreaker.GameSurface
android:id="@+id/surfaceId"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<RelativeLayout
android:id="@+id/relLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</RelativeLayout>
です:
私はまた、コード
fragmentManager.executePendingTransactions();
System.out.println("FRAGMENT ISADDED = " + fragment.isAdded());
System.out.println("FRAGMENT VISIBLE = " + fragment.isVisible());
System.out.println("FRAGMENT HIDDEN = " + fragment.isHidden());
System.out.println("FRAGMENT ISINLAYOUT = " + fragment.isInLayout());
にこれを追加し、次の出力
11-25 16:09:07.957 12155-12155/se.brickgame.brickbreaker ISystem.out: FRAGMENT ISADDED = true
11-25 16:09:07.957 12155-12155/se.brickgame.brickbreaker I/System.out: FRAGMENT VISIBLE = true
11-25 16:09:07.957 12155-12155/se.brickgame.brickbreaker I/System.out: FRAGMENT HIDDEN = false
11-25 16:09:07.957 12155-12155/se.brickgame.brickbreaker I/System.out: FRAGMENT ISINLAYOUT = false
を得ましただから、そこにいるようだレイアウトにない - それをどのように解釈するのですか?
ありがとうございますが、断片が表示されません。私は今、それを理解することはできません、編集を参照してください。 – java
この回答は私に多くの助けになりました – java