如何从膨胀的布局中获取片段

时间:2017-12-01 06:44:03

标签: android android-layout android-fragments layout-inflater

我已将布局content_main.xml虚增为view变量vi

如何从这个虚增的视图中获取fragment

可能是这样的:

SupportMapFragment mapFragment = (SupportMapFragment) inflatedView.getSupportFragmentManager()
                .findFragmentById(R.id.map);


public void getMapFragment()
{
    LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View vi = inflater.inflate(R.layout.content_main, null);

    CoordinatorLayout mainL = (CoordinatorLayout) findViewById(R.id.main_view);
    mainL.removeAllViews();
    mainL.addView(vi);

    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}

谢谢你的回答!

1 个答案:

答案 0 :(得分:0)

如果您的膨胀布局包含<fragment/>标记,即如果您的片段以其所在的活动的XML方式膨胀,那么您可以&#34;得到&#34;片段来自:

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);

您要求FragmentManager找到您的片段,这与要求View找到它不同。

如果您的膨胀布局包含以编程方式添加的片段,即您在活动的XML中添加了标记,并使用FragmentTransaction将片段添加到视图中(使用标签!),那么您可以&#34;得到&#34;片段来自:

SupportMapFragment mapFragment = (SupportMapFragment) 
          getSupportFragmentManager().findFragmentByTag("MAP");

有关片段的详细信息,请参阅此source