小编AZ1*_*Z13的帖子

Android 4.2:嵌套片段的后台堆栈行为

在Android 4.2中,支持库获得了对嵌套片段的支持,请参见此处.我玩过它并发现了一个有关back stack和getChildFragmentManager()的有趣行为/ bug .当使用getChildFragmentManager()和addToBackStack(String name)时,通过按下后退按钮,系统不会将后栈运行到前一个片段.另一方面,当使用getFragmentManager()和addToBackStack(String name)时,按下后退按钮,系统将返回上一个片段.

对我来说,这种行为是出乎意料的.通过按下设备上的后退按钮,即使片段被添加到子节点片段管理器中的后栈,我也希望弹出最后添加到后栈的片段.

这种行为是否正确?这种行为是个错误吗?这个问题有解决方法吗?

使用getChildFragmentManager()的示例代码:

public class FragmentceptionActivity extends FragmentActivity {

@Override
protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);

    final FrameLayout wrapper1 = new FrameLayout(this);
    wrapper1.setLayoutParams(new FrameLayout.LayoutParams(
            FrameLayout.LayoutParams.MATCH_PARENT,
            FrameLayout.LayoutParams.MATCH_PARENT));
    wrapper1.setId(1);

    final FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
            FrameLayout.LayoutParams.MATCH_PARENT,
            FrameLayout.LayoutParams.WRAP_CONTENT);
    params.topMargin = 0;

    final TextView text = new TextView(this);
    text.setLayoutParams(params);
    text.setText("fragment 1");
    wrapper1.addView(text);

    setContentView(wrapper1);

    getSupportFragmentManager().beginTransaction().addToBackStack(null)
            .add(1, new Fragment1()).commit();
}

public class Fragment1 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-nested-fragment

103
推荐指数
6
解决办法
4万
查看次数

使用提供的位置和标记启动Google Maps App

从我的应用程序,我想启动谷歌地图应用程序与提供的位置和标记.标记应指示该给定位置上有某些内容.

现在,我有以下代码,它以一个Intent开始,谷歌地图应用程序提供的位置(51.49234,7.43045).

startActivity(
new Intent(
    android.content.Intent.ACTION_VIEW, 
    Uri.parse("geo:51.49234,7.43045")));
Run Code Online (Sandbox Code Playgroud)

Google地图应用启动时,如下所示: 在此输入图像描述

没有显示标记.我想,谷歌地图应用程序会在该位置显示一个标记,通过意图给出.是否有任何"隐藏的"Intent URI可用于在Google Maps App中显示标记?

提前致谢.

@Rajiv M.向我指出了用给定位置查询周围环境的想法.

因此,解决方案是:使用给定位置作为参数查询给定位置的周围环境.URI看起来像:

geo:51.49234,7.43045?q=51.49234,7.43045
Run Code Online (Sandbox Code Playgroud)

Google地图会将查询结果显示为街道名称: 在此输入图像描述

有点黑客,但似乎运作良好.

为什么不应该使用0,0作为地图位置

geo:0,0?q=51.49234,7.43045
Run Code Online (Sandbox Code Playgroud)

当您使用提供的地图位置点0,0启动Google地图应用时,Google地图应用将开始搜索您当前的设备位置.这需要时间.在某些情况下,当没有提供GPS信号时,太多了.在此之前,Google Maps应用程序将开始搜索您的查询51.49234,7.43045.

android google-maps google-maps-markers android-intent

19
推荐指数
1
解决办法
2万
查看次数