0

FragmentのonActivityCreatedのrelativeLayoutにMapView(org.osmdroid.views.MapView)を追加しようとしました。しかし、うまくいきません。このフラグメントは、ShrlockFragmentActivity によって起動されます。どうすればそれを機能させることができますか?

public class CommuneFragment extends SherlockFragment {

Context mContext = getActivity();

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState) ;
    return inflater.inflate(R.layout.commune_map_fragment, container, false);
}


@Override
public void onActivityCreated(final Bundle savedState) {
    super.onActivityCreated(savedState);
    mContext=getActivity();

    View mView = getView();

    //Create the OSM view
    MapView mapView = new MapView(mContext, null);
    //enable zoom in and out on the OSM
    mapView.setClickable(true);
    mapView.setBuiltInZoomControls(true);

    RelativeLayout RL= (RelativeLayout) getActivity().findViewById(R.id.rl);
    RL.addView(mapView);
  }
4

3 に答える 3

2

これは、相対レイアウトに追加する前にマップ ビューに幅と高さを指定していないためです。

RelativeLayout RL= (RelativeLayout) getActivity().findViewById(R.id.rl);
    RL.addView(mapView);

必要なのは、マップビューに幅と高さを次のように指定することだけです。

this.mMapView.setLayoutParams(new LayoutParams(
            LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

これで私の同様の問題を解決しました。ありがとう

于 2013-12-18T11:45:27.057 に答える
0

私はこの質問で私の答えを見つけました: OSMDroidの簡単な例が必要です

しかし、私はそれがaddViewで動作しないことを知りません

于 2012-12-21T10:04:39.547 に答える
0

onCreateView メソッドでマップ ビューを簡単に返すことができます。

public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
//init mapView...
return mapView;
}

次に、fragmentTransaction を作成する fragmentActivity で、このビューをコンテンツ フレームレイアウトに配置します。

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            ft.replace(R.id.container, new CommuneFragment());
            ft.commit();

私の英語で申し訳ありませんが、お役に立てば幸いです。

于 2013-11-15T10:52:08.427 に答える