1

ここで基本が欠けているかどうかはわかりません。アクション バー タブをホストするアクティビティがあります。つまり、ここに MainActivity の構造があります -> 2 つの ActionBar タブ F1 と F2 があります|| Frag.java は、置き換えられる FrameLayout を定義する xml をホストするコンテナー フラグメントです|| F1 は Frag1.java であり、Frag1.java は明らかに古き良きフラグメントです|| F2 は Frag2.java で、Frag2.java は別のフラグメントです MainActivity で2 のタブを作成します。これは起こりません。何が問題なのですか。

(理想的には、タブの下のフラグメントをボタンクリックイベントで別のフラグメントに置き換えたい)

これが私の主な活動です

MainActivity.java

public class MainActivity extends SherlockFragmentActivity {
    @Override
    protected void onCreate(Bundle arg0) {

        super.onCreate(arg0);

        setContentView(R.layout.activity_main);

        ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);


        ActionBar.Tab FragTab1 = actionBar.newTab().setText("F1");
        ActionBar.Tab FragTab2 = actionBar.newTab().setText("F2");

        Fragment fragment1 = new Frag();
        Fragment fragment2 = new Frag2();

        FragTab1.setTabListener(new MyTabListener(fragment1));
        FragTab2.setTabListener(new MyTabListener(fragment2));

        actionBar.addTab(FragTab1,0,true);
        actionBar.addTab(FragTab2,1,false);

    }


class MyTabListener implements ActionBar.TabListener
        {
            Fragment fragment;

            public MyTabListener(Fragment fragment)
            {
                this.fragment=fragment;
            }

            @Override
            public void onTabSelected(Tab tab, FragmentTransaction ft) {}

            @Override
            public void onTabUnselected(Tab tab, FragmentTransaction ft) {  }

            @Override
            public void onTabReselected(Tab tab, FragmentTransaction ft) {}}}

そして、私の単純なフラグメントに来て、Frag、Frag1、frag2の3つのセットアップがあります

以下はfrag.javaです

public class Frag extends SherlockFragment {

    public Frag() {
        // TODO Auto-generated constructor stub
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.parent, container,false);

      FragmentManager fm = getFragmentManager();
      FragmentTransaction ft= fm.beginTransaction();


        Frag1 f1 = new Frag1();
        ft.add(R.id.contentFragment, f1);
        ft.commit();

        return  v;
    }


}

以下は私のparent.xmlです

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <FrameLayout
            android:id="@+id/contentFragment"
            android:layout_width="wrap_content"
            android:layout_height="match_parent" >
        </FrameLayout>

    </LinearLayout>

以下はfrag2.javaです

public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View v = inflater.inflate(R.layout.frag1, container, false);
        Button btn = (Button)v.findViewById(R.id.button1);
        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Frag2 fragment = new Frag2();

                FragmentManager fm = getFragmentManager();
                FragmentTransaction transaction = fm.beginTransaction();
                transaction.replace(R.id.contentFragment, fragment);
                transaction.commit();

            }
        });
        return v;
    }

上記のフラグメントでは、ボタンのクリックがフラグメントを置き換えることになっていることがわかりますが、このフラグメントを配置することさえできません。

私は3日間からこれをジャグリングしています。ここで助けや提案をいただければ幸いです。または、誰かが私が間違っている場所を教えてくれれば素晴らしいでしょう!

4

1 に答える 1