1

フラグメントに 3 つのリストビューがあるビュー ページャーをホストしている古い FragmentActivity を変更しようとしています。Fragment クラスには、Activity に似たコードがあります。実際、既存の Android アプリケーションを変換してフラグメントを使用する場合、コードをアクティビティのコールバック メソッドからフラグメントのそれぞれのコールバック メソッドに移動するだけで十分であると思いました。しかし、うまくいきませんでした。行で NullPointerException を取得します

mViewPager.setAdapter(mAppSectionsPagerAdapter);

コードは次のとおりです。

public class FragmentAllEvents extends Fragment implements ActionBar.TabListener 
{
    AppSectionsPagerAdapter mAppSectionsPagerAdapter;

    // JSON Node names
    private static final String TAG_UID = "uid";
    private static final String TAG_LOGO = "logo";
    private static final String TAG_POKUID = "pokuid";

    static ArrayList<HashMap<String, String>> userList;
    ArrayList<HashMap<String, String>> userListTotal;
    HashMap<String, String> userSelected;
    EventsFunctions eventsFunctions;
    UserFunctions userFunctions;
    /**
     * The {@link ViewPager} that will display the three primary sections of the app, one at a
     * time.
     */
    ViewPager mViewPager;
    static ListView lv;
    ActionBar actionBar;

    //Context context = this;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        View v = inflater.inflate(R.layout.all_events_main, container, false);

        Log.e("AllEventsFragmentActivity Report", "Entering AllEventsFragments");
        // Create the adapter that will return a fragment for each of the three primary sections
        // of the app.
        //FragmentManager fm = getSupportFragmentManager();
        mAppSectionsPagerAdapter = new AppSectionsPagerAdapter(getFragmentManager());

        // Set up the action bar.
        actionBar = getActivity().getActionBar();

        // Specify that the Home/Up button should not be enabled, since there is no hierarchical
        // parent.
        actionBar.setHomeButtonEnabled(true);

        // Specify that we will be displaying tabs in the action bar.
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // Set up the ViewPager, attaching the adapter and setting up a listener for when the
        // user swipes between sections.
        mViewPager = (ViewPager) getActivity().findViewById(R.id.pager_main);
        mViewPager.setAdapter(mAppSectionsPagerAdapter);
        // Defining a listener for pageChange 
        mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() 
        {
            [...]
        });

        [...]
}

このクラスの以前のバージョンでは、Fragment の代わりに FragmentActivity を使用して FragmentAllEvents を拡張していました。

4

1 に答える 1

2

mViewPager が設定されておらず、NULL のように見えます。レイアウトにある場合pager_mainは、all_events_main使用する必要がありますv.findViewById(R.id.pager_main)

于 2013-09-23T01:14:38.393 に答える