【问题标题】:How to Call Navigation Drawer Fragment From A Fragment如何从片段中调用导航抽屉片段
【发布时间】:2015-10-22 11:58:21
【问题描述】:

所以我在我的一个片段组件中集成了一个谷歌地图,我还有一个导航抽屉。谷歌地图在我的抽屉片段之一。我的问题是当我单击地点标记信息窗口时如何更改片段。

public class AboutFragment extends Fragment {
   private GoogleMap mMap;

...

mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
        @Override
        public void onInfoWindowClick(Marker marker) {
            Toast.makeText(getActivity(), "Clicked on Info view", Toast.LENGTH_SHORT).show();
            // This is where I want to call my ProductsFragment class.


        }
});

...

}

这就是我的 ProductsFragment 类如下所示。

public class ProductsFragment extends Fragment {


public ProductsFragment() {
    // Required empty public constructor
}

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

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_products, container, false);
}

}

我尝试使用 FragmentManager,但出现错误。也许我做得不对,但你们能帮帮我吗?

谢谢

【问题讨论】:

标签: java android android-fragments google-maps-markers google-maps-android-api-2


【解决方案1】:

我已经开始工作了

Fragment fragment = fragmentProducts;
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment aboutFragment = MainActivity.setFragment();
ft.remove(aboutFragment);
ft.add(R.id.container_body, fragment).commit();

但它不会改变 ActionBar 的标题?

关于如何在这堂课中改变它的任何线索?

【讨论】:

    【解决方案2】:

    “但它不会改变 ActionBar 的标题?任何线索如何去 在这个类中改变它?”

    是的,只要打电话:

    getActionBar().setTtitle(fragmentTitle);
    

    在哪里?

    ** 你可以添加监听器:) 到抽屉

    DrawerLayout.setDrawerListener(DrawerLayout.DrawerListener)
    
    // example for open/close/changeState etc
    @Override
    public void onDrawerOpened(View drawerView) {
                // set title or subtitle
                getActionBar().setSubtitle(title);
    }
    

    **如果你从上一个片段返回,则在 onBackPressed() 中

    **或在片段适配器的ItemSelected之后

    **或在你的代码中的后声明:

    ft.add(R.id.container_body, fragment).commit(); 
    

    **或在片段中

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        // set title or subtitle
        getActionBar().setSubtitle(fragmentTitle);
    }
    

    如您所见,这取决于您想在何时何地进行操作

    我收到错误“无法解析方法 getActionBar()”。那行代码我还需要别的东西吗?

    ActionBar

    AppCompatActivity

    【讨论】:

    • 我收到错误“无法解析方法 getActionBar()”。那行代码我还需要别的东西吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 2018-01-16
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多