0

ActionBarSherlockのTabNavigationサンプルを、textViewのテキストを変更するだけでなく(このサンプルのように)別のフラグメントに移動して機能させるようにしています。これは私のコードです:

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;

import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.view.MenuItem;
import android.widget.Toast;

public class TestNavigation extends SherlockActivity {

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

        getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        for (int i = 1; i <= 3; i++) {
            ActionBar.Tab tab = getSupportActionBar().newTab();
            tab.setText("Tab " + i);
            SherlockFragment PlayerFragment = new PhotosActivity();
            tab.setTabListener(new MyTabsListener(PlayerFragment));
            getSupportActionBar().addTab(tab);
        }
    }

    class MyTabsListener implements ActionBar.TabListener {
        public SherlockFragment fragment;

        public MyTabsListener(SherlockFragment fragment) {
            this.fragment = fragment;
        }

        @Override
        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            Toast.makeText(getApplicationContext(), "Reselected!", Toast.LENGTH_LONG).show();   
        }

        @Override
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
            ft.replace(R.id.fragment_container, fragment);
        }

        @Override
        public void onTabReselected(Tab tab, FragmentTransaction ft) {
            ft.remove(fragment);
        }   
     }

そしてmain.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_gravity="center">
    <LinearLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

 </LinearLayout>
</LinearLayout>

そして、photoActivityは非常にシンプルです。

public class PhotosActivity extends SherlockFragment {

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

私たちを手伝ってくれますか?

私が間違っていると思われる場合は、私がフォローできるサンプルまたはトーチュアルを教えてください。

4

1 に答える 1

1

アクティビティを変更して、SherlockActivityではなくSherlockFragmentActivityを拡張します。もう1つはメソッドに移動ft.replace(R.id.fragment_container, fragment);することです。タブが選択されているときにタブを押すとフラグメントが削除されるため、メソッド内に移動する必要は onTabSelected(Tab tab, FragmentTransaction ft)ないと思います。ft.remove(fragment);onTabReselected()

于 2012-12-29T17:38:07.257 に答える