1

我目前正在使用预定义的导航类型“Tabs + swipe”(最初是在我创建项目时选择的)。

我有三个选项卡,我需要两个列表视图和一个 MapActivity。感谢 FragmentList,我成功地显示了列表视图,但现在我正在尝试显示 MapActivity,但我的代码根本不起作用:/

这是我添加的内容:

public static class MyFragment extends Fragment {
        int idList;

        private MapView map=null;
        private MyLocationOverlay me=null;

        static MyFragment newInstance(int num) {
            MyFragment f = new MyFragment();

            Bundle args = new Bundle();
            args.putInt("num", num);
            f.setArguments(args);

            return f;
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {

            return(new FrameLayout(getActivity()));
        }

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

            map = new MapView(getActivity(), "xxxxxxxxxx");
            map.setClickable(true);

            Drawable marker=getResources().getDrawable(R.drawable.ic_action_search);
            marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight());

            map.getOverlays().add(new ItemizedOverlay(marker, getActivity()));

            me = new MyLocationOverlay(getActivity(), map);
            map.getOverlays().add(me);

            ((ViewGroup)getView()).addView(map);
        }
    }

在我的 FragmentPagerAdapter 中进入 getItem(int) 我这样做:

public Fragment getItem(int position) {
    if(position == 0)
       return MyFragment.newInstance(0);
}

然后我得到了这个错误:

10-02 18:28:41.618: E/AndroidRuntime(23677): FATAL EXCEPTION: main
10-02 18:28:41.618: E/AndroidRuntime(23677): java.lang.IllegalArgumentException: MapViews can only be created inside instances of MapActivity.
10-02 18:28:41.618: E/AndroidRuntime(23677):    at com.google.android.maps.MapView.<init>(MapView.java:291)
10-02 18:28:41.618: E/AndroidRuntime(23677):    at com.google.android.maps.MapView.<init>(MapView.java:235)

关于我应该做什么的任何想法?

4

0 回答 0