1

を拡張するメイン アクティビティの一部にViewPagerusingを追加する必要があります。このために、拡張するクラスを作成しました。ここから、作成するビューを含む呼び出しを追加します。しかし、私が直面している問題は、メインクラスにメインアクティビティでビューページャーを作成させることができないことです。FragmentTabActivityViewPagerActivityFragmentActivityFragmentAdapterFragment

ViewPagerActivity問題は、メイン クラスでクラスを呼び出しているときに、 を作成してfragmentを作成できないことだと思いますviewpager

私がこれでほぼ1か月間立ち往生しているのを助けてください。私が試した各ソリューションは失敗します。これらのコードは、別のプロジェクトで個別に実装すると完全に実行されますが、私のプロジェクトで実装すると実行されないようです。

ViewPagerActivity クラス

class ViewPagerClass extends FragmentActivity implements OnClickListener
    {
            TestFragmentAdapter mAdapter;
            ViewPager mviewpager;
            CirclePageIndicator mIndicator;
            @Override
            protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
                mAdapter = new TestFragmentAdapter(getSupportFragmentManager());
                mviewpager = new ViewPager(getApplicationContext());
                mviewpager.setId(R.id.viewPager);
                mviewpager.setAdapter(mAdapter);
                mIndicator = (CirclePageIndicator)findViewById(R.id.indicator);
                mIndicator.setViewPager(mviewpager);
            }
            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
            }
        }

TestFragmentAdapter.java

class TestFragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter {
    protected static final String[] CONTENT = new String[] { "This", "Is", "A", "Test"};
    protected static final int[] ICONS = new int[] {};
    private int mCount = CONTENT.length;

    public TestFragmentAdapter(FragmentManager fm) {
         super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return TestFragment.newInstance(CONTENT[position % CONTENT.length]);
    }

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

    @Override
    public CharSequence getPageTitle(int position) {
      return TestFragmentAdapter.CONTENT[position % CONTENT.length];
    }

    @Override
    public int getIconResId(int index) {
      return ICONS[index % ICONS.length];
    }

    public void setCount(int count) {
        if (count > 0 && count <= 10) {
            mCount = count;
            notifyDataSetChanged();
        }
    }

TestFragment.java

public final class TestFragment extends Fragment {
    private static final String KEY_CONTENT = "TestFragment:Content";
    static TestFragment fragment = new TestFragment();
    public static TestFragment newInstance(String content) {
        StringBuilder builder = new StringBuilder();
        builder.append(content).append("\n");
        fragment.mContent = builder.toString();
        return fragment;
    }
    private String mContent = "???";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) {

            mContent = savedInstanceState.getString(KEY_CONTENT);
        }
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.pagerframe, container);
        LayoutParams textparam = new LayoutParams(130,40);
        TestView text = new TextView(getActivity());
        text.setText(mContent);
        text.setTextColor(Color.WHITE);
        LinearLayout layout = (LinearLayout) view.findViewById(R.id.pager_ll);
        layout.setBackgroundColor(Color.BLUE);
        layout.setVisibility(View.VISIBLE);
        layout.setGravity(Gravity.CENTER);
        layout.setOrientation(LinearLayout.VERTICAL);

        layout.addView(text,textparam);
        return layout;
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString(KEY_CONTENT, mContent);
        }
}
4

2 に答える 2

1

コンテンツ ビューを設定するのを忘れたので、ViewPager を初期化した後、ビュー ページャーがコンテンツ ビューであるように設定します。

setContentView(mviewpager);
于 2013-02-15T04:48:42.923 に答える
0

コードは最終的に、あちこちでいくつかの変更を加えて機能しました。私と同じ問題を抱えている他の開発者を助けるために、ここに追加したいと思います。

Fragment を使用して、TabActivity を拡張するメイン アクティビティの一部に ViewPager を追加する必要があります。このために、 FragmentActivity を拡張する ViewPagerActivity クラスを作成しました。ここから、作成するビューを含む Fragment を作成する FragmentAdapter の呼び出しを追加します。しかし、私が直面している問題は、メインクラスにメインアクティビティでビューページャーを作成させることができないことです。

  • Fragmentまず、との両方が必要だったので、複数のクラスを拡張できませんでした。TabActivity
  • Tabの機能をリスナーとしても拡張できる場所を見つけました。これが私がそれをした方法です:

    public class Main extends FragmentActivity implements OnClickListener,TabContentFactory{ }
    
  • 次に、クラスのコードViewPagerActivityMain

  • これが一番の問題だったと思います。とにかく、このようなクラスBundle内を作成するようにコードを変更しましたTestFragment

    public static TestFragment newInstance(String content) {
      TestFragment fragment = new TestFragment();
      Bundle args = new Bundle();
      args.putString("content", content);
      fragment.setArguments(args);
      return fragment;
     }
    
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      // the if clause wasnot working for me 
      mContent = getArguments().getString("content");
    }
    
    • onCreate以前見逃していたレイアウトではなく、ビューを返すように変更しました

      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
       View view = inflater.inflate(R.layout.pagerframe, container,false);
       LayoutParams textparam = new LayoutParams(LayoutParams.FILL_PARENT,30);
       TestView text = new TextView(getActivity());
       text.setText(mContent);
       text.setTextColor(Color.WHITE);
       LinearLayout layout = (LinearLayout) view.findViewById(R.id.pager_ll);
       layout.setVisibility(View.VISIBLE);
       layout.setGravity(Gravity.CENTER);
       layout.setOrientation(LinearLayout.VERTICAL);
       layout.addView(edtext,textparam);
       return view;
      }
      
    • この後、すべてがうまくいきました。

于 2013-03-05T11:52:15.520 に答える