2

これを理解するのにとても苦労しています.SampleFragments ABSアプリを調べたところ、これを達成するためにカスタムリスナーでTabHostを使用しています..これが私の唯一のオプションですか、それとも私がどのように機能させることができますかそれを機能させようとしています..(画面スペースを節約するためにランドスケープモードでActionBarにオーバーレイする方法のため、デフォルトのTabNavを使用したいと思います.

主な活動:

public class MainActivity extends SherlockFragmentActivity implements ActionBar.TabListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //create Tab Nav
    ActionBar bar = getSupportActionBar();
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);

    bar.addTab(bar.newTab()
            .setText("Tab1")
            .setTabListener(this));        
    bar.addTab(bar.newTab()
            .setText("Tab2")
            .setTabListener(this)); 
    bar.addTab(bar.newTab()
            .setText("Tab3")
            .setTabListener(this));
}

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

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

    FrameLayout frame = (FrameLayout) findViewById(R.id.tabcontent);
    if (tab.getText() == "Tab2")
    {           
        frame.setBackgroundColor(0xFF00FF00);
    }
    if (tab.getText() == "Tab1")
    {
        frame.setBackgroundColor(0xFFFFFFFF);
    }        
}

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

サポート & フラグメント アクティビティ

public class TestSupport extends SherlockFragmentActivity{

public static Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    btn = (Button) findViewById(R.id.buttonOMG);

    FragmentManager fm = getSupportFragmentManager();

    // Create the list fragment and add it as our sole content.
    if (fm.findFragmentById(android.R.id.tabcontent) == null) {
        MapsFragment list = new MapsFragment();
        fm.beginTransaction().add(android.R.id.tabcontent, list).commit();
    }
}

public static class TestFragment extends SherlockListFragment {

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

        //setHasOptionsMenu(true);
        btn.setText("LOL");            

    }
}
}

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="#CCC">

<FrameLayout
        android:id="@+id/tabcontent"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

    <Button
        android:id="@+id/buttonOMG"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</FrameLayout>
</LinearLayout>

ボタンテキストの変更をインジケーターとして使用して、正しく実装されているかどうかを確認しています..

私が問題を抱えているのは onTabSelected クラスにあります..フラグメントを呼び出して実行し、タブコンテンツレイアウトに表示するにはどうすればよいですか? フラグメントとサポートは、機能させるために呼び出す必要がある場所に正しくコーディングされていますか? 私は困惑しています。

ありがとうございました!

4

0 に答える 0