从我的Android应用中打开Goog​​le地图

时间:2015-02-17 21:33:20

标签: android google-maps

我希望能够有一个可以启动Google地图应用的按钮,但是我似乎无法让它工作,我可以帮忙吗?真的很抱歉,如果这看起来很容易,我仍然是一个新手用android,下面是我的oncreate方法与相关意图

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getSupportActionBar().setIcon(R.drawable.ic_action_headphones);
    getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
    Button mapsbtn = (Button) findViewById(R.id.mapbtn);

    mapsbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String uri = String.format(Locale.ENGLISH, "geo:%f,%f");
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
            startActivity(intent);
        }
    });

}

我的应用程序在按下按钮时不断崩溃,我收到的错误是

  

E / AndroidRuntime:致命异常:主要       过程:juddsafc.actionbarexample,PID:2980       java.util.MissingFormatArgumentException:格式说明符:f

提前致谢!

2 个答案:

答案 0 :(得分:1)

当您放置%f,%f后,您需要提供值...所以改变这个:

String uri = String.format(Locale.ENGLISH, "geo:%f,%f");

到此:

String uri = String.format(Locale.ENGLISH, "geo:%f,%f", 35.6833, -139.7667);  // numbers are just some random coordinates

答案 1 :(得分:0)

String uri = String.format(Locale.ENGLISH, "geo:%f,%f");

%f是格式化程序。你的程序需要一个值来替换%f,但是你的函数没有足够的参数来实现它。

您可以执行以下操作:

String uri = String.format(Locale.ENGLISH, "geo:%f,%f", 100, 200);

而不是使用100和200,而是传递要显示的值。