1

左半分にいくつかのボタンがある LinearLayout によってレイアウトが構成されている FragmentActivty と、他のアクティビティを挿入する右半分に空のコンテナ FrameLayout があります (アクティビティではなくフラグメントである必要があります)。

タッチしたボタンに応じて、1 つのアクティビティ/フラグメントが呼び出され、これがコンテナー フレームレイアウトに表示されます。

このために私は持っています:

Main.java

public class Main extends FragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

main.xml

<RelativeLayout     

<!-- Buttons containing layout -->    
<LinearLayout 

    <Button
        ... />
    ...

</LinearLayout>

<!-- Blank space which will contain other activities -->
<FrameLayout
    android:id="@+id/activitycontent"
    ...>    
</FrameLayout>   

これは、コンテナー フレームレイアウトで動的に設定するアクティビティ/フレームの例です。

Content1.java

public class Content1 extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    /**Inflate the layout for this fragment*/
    return inflater.inflate(R.layout.content1, container, false);
}

@Override
public void onActivityCreated(Bundle state) {
    super.onActivityCreated(state);

したがって、問題は次 のとおりです。フレームレイアウトを content1 アクティビティ/フレームのコンテナーとして定義するにはどうすればよいですか?また、それを設定するにはどうすればよいですか? (ボタンをタッチしたときにアクティビティ/フラグメントを呼び出すことを思い出してください)

4

2 に答える 2

0

フラグメントをロードするには

public void switchContent(Fragment fragment, boolean addToBackStack)
{
    FragmentManager fragmentManager = getSupportFragmentManager();
    if(fragmentManager == null)
    {
        Log.e("switchContent", "Fragment manager is null, exiting");
        return;
    }
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

    if(fragmentTransaction == null)
    {
        Log.e("switchContent", "Fragment transaction is null, exiting");
        return;
    }

    fragmentTransaction.replace(R.id.activitycontent, fragment);
    if(addToBackStack)
    {
        fragmentTransaction.addToBackStack(null);
    }

    fragmentTransaction.commit();
}

ボタンをクリックすると、このメソッドを次のように呼び出します

switchContent(new Content1(), false); 

また

switchContent(new Content1(), true); // if want this fragment to be added in stack
于 2013-11-05T12:21:32.750 に答える