【问题标题】:Android Starting browser from dialogAndroid 从对话框启动浏览器
【发布时间】:2011-04-22 10:44:44
【问题描述】:

我有一个显示逐项叠加的地图视图,每个 onTap 事件都显示一个对话框,其中包含有关旅行社和三个按钮的信息,其中一个应该在浏览器中打开旅行社网站,但是当我单击我得到的按钮:没有找到处理 Intent 的活动。

这是我的代码:

protected boolean onTap(int i){
float[] results = new float[1];
        Location.distanceBetween(decdegrees(appState.getMyLocation().getLatitudeE6()), decdegrees(appState.getMyLocation().getLongitudeE6()), decdegrees(points.get(i).getPoint().getLatitudeE6()), decdegrees(points.get(i).getPoint().getLongitudeE6()), results);
        float distance = results[0]/1000;
        DecimalFormat maxDigitsFormatter = new DecimalFormat("#.#");
        String infos=points.get(i).getSnippet() + "#" + String.valueOf(maxDigitsFormatter.format(distance));
        final String [] AInfos = infos.split("#");

        final Dialog ADialog = new Dialog(c);
        ADialog.setContentView(R.layout.travelagency);

        TextView txtAgence = (TextView)ADialog.findViewById(R.id.txtAgence);
        TextView txtAddress = (TextView)ADialog.findViewById(R.id.txtAddress);
        TextView txtDistance = (TextView)ADialog.findViewById(R.id.txtDistance);
        TextView txtFax = (TextView)ADialog.findViewById(R.id.txtFax);
        Button btnCall = (Button)ADialog.findViewById(R.id.btnCall);
        Button btnWebSite = (Button)ADialog.findViewById(R.id.btnWebSite);
        Button btnCancel = (Button)ADialog.findViewById(R.id.btnCancel);

        ADialog.setTitle(AInfos[0]);
        btnCall.setText("Appeler : " + AInfos[2]);
        txtAgence.setText(AInfos[1]);
        txtDistance.setText("Approximativement à : " +AInfos[6] + " Km");
        txtAddress.setText("Adresse : " + AInfos[3]);
        txtFax.setText("Fax : " + AInfos[4]);
        ADialog.show();

        btnCancel.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                ADialog.dismiss();
            }
        });

        btnWebSite.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent myIntent = new Intent(Intent.ACTION_VIEW,Uri.parse(AInfos[5]));
                v.getContext().startActivity(myIntent);
            }
        });

        return (true);
    }

我找到了示例 herehere 但突然对我不起作用..

谢谢

【问题讨论】:

    标签: android android-activity dialog itemizedoverlay


    【解决方案1】:

    这将创建在默认浏览器中打开网页的正确意图:

    Uri url = Uri.parse("http://www.someUrl.com");
            Intent intent = new Intent(Intent.ACTION_VIEW, url);
            startActivity(intent);
    

    【讨论】:

    • 是的,我看到了代码,'btnWebSite.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent myIntent = new Intent(Intent.ACTION_VIEW,Uri.parse(AInfos[ 5])); v.getContext().startActivity(myIntent); } });'如果我删除 v.getContext 它会导致另一个错误
    • 调试应用并确保 AInfos[5] 是一个 Url
    • 你是对的 AInfos[5] 是空值,所以当我传递正确的 url 时,它可以工作,但是有了这个 :v.getContext().startActivity(myIntent) 非常感谢你
    【解决方案2】:

    很可能您的AInfos[5] 不是正确的网址。硬编码一个像http://www.google.com 这样的网址,看看它是否首先工作。同时打印AInfos[5] 包含的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多