2

Androidのタブの標準は、FragmentActivityでタブホストを使用し、各タブをFragmentとして持つことです。ここでの問題は、同じ FragmentActivity (タブレットまたはランドスケープ モード) のサイド サイド フラグメントを持つシステム全体、または 1 つの Fragment が 2 番目の Fragment で別の FragmentActivity を起動する (小さなデバイスまたはローテーションの場合) ことはないようです。タブごとに FragmentActivities を使用できないためです。では、タブにフラグメントを配置する主な利点をどのように実装すればよいでしょうか?

よろしく、

4

1 に答える 1

4

はい、タブごとにfragmentActivitiesを設定できます。

これはPagerAdapterの例です。

public class ExamplePagerAdapter extends FragmentPagerAdapter {

    public ExamplePagerAdapter(FragmentManager fm) {
        super(fm);
        // TODO Auto-generated constructor stub
    }


    @Override
    public int getCount() {
        return 3;
    }

    @Override
    public Fragment getItem(int position) {
        Fragment f = null;
        switch(position){
        case 0:
        {
        f = new ArrayListFragment();
        // set arguments here, if required
        Bundle args = new Bundle();
        f.setArguments(args);
        break;
        }
        case 1:
        {
            f = new PrincipalFragment();
            // set arguments here, if required
            Bundle args = new Bundle();
            f.setArguments(args);
            break;
        }
        case 2:
        {   
            f = new ViewFragment();
            // set arguments here, if required
            Bundle args = new Bundle();
            f.setArguments(args);
            break;
        }   
        default:
          throw new IllegalArgumentException("not this many fragments: " + position);
        }


        return f;


}

}

これを使用して、各フラグメントのすべてのアクティビティを呼び出すことができます。

public class PrincipalFragment extends Fragment {

    private int mNum;
    private EditText et;



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mNum = getArguments() != null ? getArguments().getInt("num") : 1;
    }

    /**
     * The Fragment's UI is just a simple text view showing its
     * instance number.
     */
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.scrollview, container, false);



        ImageView i = (ImageView)v.findViewById(R.id.imageView1);
          ImageView i2 = (ImageView)v.findViewById(R.id.imageView2);

          ImageView i4 = (ImageView)v.findViewById(R.id.imageView4);
          ImageView i5 = (ImageView)v.findViewById(R.id.imageView5);


          ImageDownloader.Mode mode = ImageDownloader.Mode.CORRECT;
          ImageDownloader imageDownloader = new ImageDownloader();
          imageDownloader.download(URLnames.URLS[1], i);
          imageDownloader.download(URLnames.URLS[2], i2);
          imageDownloader.download(URLnames.URLS[3], i4);
          imageDownloader.download(URLnames.URLS[4], i5);


        return v;

上記の例のように、私はレイアウトをscrollviewと呼んでいるので、scrollview.xmlを作成するときは、詳細を指定する必要があります。

新規>androidxmlファイル>レイアウトタイプの選択>次へ>特定の構成を選択します(密度、向きなどで使用できます...)>終了。

これで、eclipseは特定の構成ごとに異なるフォルダーを作成し、異なる画面サイズまたはsdkversionを実行すると、それを独自に管理します。

詳細については、「複数の画面のサポート」を参照してください。

タブスクロールを適切に実装する方法がわかりませんか?この回答にアクセスしてください:Actionbarsherlock +タブ+マルチフラグメント?

フラグメントアクティビティ内で、画面の向きを選択するケースを作成するか、AndroidManifest.xmlに配置できます。

于 2012-05-23T19:25:19.043 に答える