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

How to get fragment from inflated layout

我已将布局 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);
}

谢谢您的回答!

如果您的扩充布局包含 <fragment/> 标记,即如果您的片段以 XML 方式扩充它所在的 activity,那么您可以 "get"片段来自:

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

你要求 FragmentManager 找到你的片段,这不同于要求 View 找到它。

如果您的扩充布局包含您以编程方式添加的片段,即您在 activity 的 XML 中放置了一个标签,并使用 FragmentTransaction 将片段添加到您的查看(使用 TAG!),然后您可以通过以下方式 "get" 片段:

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

有关片段的更多信息,请参阅此 source