【问题标题】:Starting Another Activity on InfoWindowClickListener在信息窗口上启动另一个活动单击侦听器
【发布时间】:2014-01-02 10:44:48
【问题描述】:

我只是想从我的FragmentActivity 那里导航到另一个Activity,那里有GoogleMap。我有InfoWindowClickListener的以下代码

googleMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {

        @Override
        public void onInfoWindowClick(Marker marker) {
            String distance[] = marker.getSnippet().split(" - ");
            String distanceString = distance[0];
            String idString = marker.getId();
            String stationid = markershashmap.get(idString);
            Toast.makeText(getApplicationContext(), "Clicked",
                    Toast.LENGTH_SHORT).show();
            Intent dockitdetailsIntent = new Intent(
                    getApplicationContext(), AnotherActivity.class);
            TabGroupActivity parentActivity = (TabGroupActivity) getParent();

            dockitdetailsIntent.putExtra("stationId", stationid);
            dockitdetailsIntent.putExtra("distance", distanceString);

            parentActivity.startChildActivity("Activity Name",
                    dockitdetailsIntent);
        }
    });

但是当我单击信息窗口时,我的设备挂起,然后我必须强制关闭没有响应的应用程序。当我使用startActivity(dockitdetailsIntent) 时,它可以正常工作,但 Tab 会删除。但我想在类似的选项卡中使用 Next Activity。请告诉我为什么我的设备挂出并且没有响应。

【问题讨论】:

  • 建议只是尝试:将 getparent() 传递到您的 Intent dokitdetailsIntent = new Intent( getParent(), AnotherActivity.class);
  • 如果你使用的是 TabGroupActivity 那么你必须使用 getParent() 而不是 getApplicationContext()
  • @MD 尝试了很多次,但没有解决方案。设备完全挂起
  • 现在看看我的回答。它在我的情况下工作。试试这个

标签: android google-maps android-intent android-fragmentactivity infowindow


【解决方案1】:

创建 Handler 并将 Intent 逻辑放入如下:

mMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {

            @Override
            public void onInfoWindowClick(Marker m1) {
                // TODO Auto-generated method stub
                try{
                        String[] str2=str.split("contactID");
                            Message mesg = new Message();
                            Bundle b = new Bundle();
                            b.putString("contact_id", str2[1]);
                            mesg.setData(b);
                            handler.sendMessage(mesg);

                }catch(Exception e){
                    e.printStackTrace();
                }

            }
        });

现在创建一个如下所示的处理程序:

private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        Bundle b = msg.getData();

        Bundle b1 = new Bundle();
        b1.putString("ContactID", b.getString("contact_id"));
        b1.putBoolean("showBack", true);
        Intent edit = new Intent(getParent(), ContactDetails2.class);
        edit.putExtras(b1);

        TabGroupActivity parentActivity = (TabGroupActivity) getParent();
        parentActivity.startChildActivity("ContactDetails2", edit);

    }
};

试试这个。它在我的情况下工作

【讨论】:

  • 让我集成,但为什么设备死机?
  • 它工作正常...但是我们必须注意问题。如果你知道的话,能告诉我吗?
  • 我不知道这一点,但是当我遇到这个问题时,我从我的 logcat 得到了这个解决方案,我的 logcat 说“无法实现一个处理程序”。所以只要实现这个逻辑。没有别的了,伙计
  • 感谢 bud +100 的解决方案
猜你喜欢
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 2013-05-16
  • 2019-10-30
  • 1970-01-01
  • 2018-07-20
  • 2013-08-09
  • 2012-09-19
相关资源
最近更新 更多