質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

2回答

895閲覧

Activityからデータを移動させてGoogleMapAPIを起動させたいです。

NiinaDjm

総合スコア12

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2019/05/29 08:08

前提・実現したいこと

windows Android studioです。javaです。開発超ド級初心者です。
経度と緯度を入力したら、指定した場所でグーグルの地図が出てくるアプリを作っています。
GoogleMapAPIを利用したいため、画面構成は以下の三つと考えています。
1.入力画面
2.入力された数字の確認画面
3.入力された経度と緯度のGoogleMapのアクティビティ

3で詰まってしまいました。
GoogleMapが開かずに、強制終了してしまいます。
入力データの移動がうまくいってないのかと思い、データを媒介せずにGoogleMapを開こうとすると、最初の画面に戻ってしまいます。

しかし、errorメッセージの見方も今一つ分からず、困ってしまいました。
質問の仕方や文章も読みづらく分かりにくいとは思うのですが、なにか解決につながるアドバイスを頂けたらと思います。

発生している問題・エラーメッセージ

このエラーメッセージは一部ですが、こうなります。

at java.lang.Integer.parseInt(Integer.java:627) at java.lang.Integer.parseInt(Integer.java:650) at com.example.googlemap2.ResultPage.onClickMap(ResultPage.java:42) at java.lang.reflect.Method.invoke(Native Method)  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)  at android.view.View.performClick(View.java:6597)  at android.view.View.performClickInternal(View.java:6574)  at android.view.View.access$3100(View.java:778)  at android.view.View$PerformClick.run(View.java:25885)  at android.os.Handler.handleCallback(Handler.java:873)  at android.os.Handler.dispatchMessage(Handler.java:99)  at android.os.Looper.loop(Looper.java:193)  at android.app.ActivityThread.main(ActivityThread.java:6669)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 

MapsActivityのコードです。

java

1package com.example.googlemap2; 2 3import android.content.Intent; 4import android.support.v4.app.FragmentActivity; 5import android.os.Bundle; 6 7import com.google.android.gms.maps.CameraUpdateFactory; 8import com.google.android.gms.maps.GoogleMap; 9import com.google.android.gms.maps.OnMapReadyCallback; 10import com.google.android.gms.maps.SupportMapFragment; 11import com.google.android.gms.maps.model.LatLng; 12import com.google.android.gms.maps.model.MarkerOptions; 13 14public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 15 16 private GoogleMap mMap; 17 18 @Override 19 protected void onCreate(Bundle savedInstanceState) { 20 super.onCreate(savedInstanceState); 21 setContentView(R.layout.activity_maps); 22 // Obtain the SupportMapFragment and get notified when the map is ready to be used. 23 SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 24 .findFragmentById(R.id.map); 25 mapFragment.getMapAsync(this); 26 } 27 28@Override 29 public void onMapReady(GoogleMap googleMap) { 30 mMap = googleMap; 31 Intent intent = getIntent(); 32 double keido = (double) intent.getIntExtra("mkeido", (int) -34); 33 double ido = (double) intent.getIntExtra("mrido", (int) 151); 34 // Add a marker in Sydney and move the camera 35 LatLng place = new LatLng(keido,ido ); 36 mMap.addMarker(new MarkerOptions().position(place).title("Marker in Your Place")); 37 mMap.moveCamera(CameraUpdateFactory.newLatLng(place)); 38 }

###入力画面のActivityです。

java

1package com.example.googlemap2; 2 3import android.content.Intent; 4import android.support.v7.app.AppCompatActivity; 5import android.os.Bundle; 6import android.util.Log; 7import android.view.View; 8import android.widget.Button; 9import android.widget.EditText; 10import android.widget.TextView; 11 12import static android.provider.AlarmClock.EXTRA_MESSAGE; 13 14 15public class MainActivity extends AppCompatActivity { 16 17 private EditText keido; 18 private EditText ido; 19 20 @Override 21 protected void onCreate(Bundle savedInstanceState) { 22 super.onCreate(savedInstanceState); 23 setContentView(R.layout.activity_main); 24 //経度と緯度のビュー変数を初期化する 25 keido =findViewById(R.id.editText1); 26 ido = findViewById(R.id.editText3); 27 28 29 Log.d("MainActivity",""); 30 } 31 public void StartButton(View view){ 32 //startボタンが押された時の処理 33 Intent intent = new Intent(this,ResultPage.class); 34 35 String eKeido = keido.getText().toString(); 36 String eido = ido.getText().toString(); 37 intent.putExtra("keido",eKeido); 38 intent.putExtra("ido",eido); 39 startActivity(intent); 40 41 } 42} 43

入力数字の確認画面のActivityです。

package com.example.googlemap2; import android.content.Intent; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.TextView; import static android.provider.AlarmClock.EXTRA_MESSAGE; public class ResultPage extends AppCompatActivity { String rkeido; String rido; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_result_page); Intent intent = this.getIntent(); rkeido =intent.getStringExtra("keido"); rido = intent.getStringExtra("ido"); TextView keidoView = findViewById(R.id.result1); TextView idoView = findViewById(R.id.result2); keidoView.setText(rkeido); idoView.setText(rido); Log.d("Result_keido:", String.valueOf(rkeido)); Log.d("Result_ido:",String.valueOf(rido)); } public void onClickMap(View view){ //APIを利用しないで地図を表示させる試み→変数に直した途端行き詰まり断念 // double atai =Integer.parseInt(rkeido); // double atai2 =Integer.parseInt(rido); // Log.d("Result_atai:", String.valueOf(atai)); // Log.d("Result_atai2:",String.valueOf(atai2)); // // Uri uri = Uri.parse("geo:"+atai+","+atai2+"?z=16"); // Intent intent = new Intent(Intent.ACTION_VIEW,uri); // startActivity(intent); Intent intent = new Intent(this,MapsActivity.class); double mkeido = Integer.parseInt(rkeido); double mido = Integer.parseInt(rido); Log.d("Result_mkeido:", String.valueOf(mkeido)); Log.d("Result_mido:",String.valueOf(mido)); intent.putExtra("mkeido",mkeido); intent.putExtra("mido",mido); startActivity(intent); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

先輩に助けていただき、なんとか解決しました。
doubleの変換もそうですが、型が諸々あっていませんでした。
まずはそこを直します。

型をDoubleにあわせる

java

1//public class ResultPage extends AppCompatActivity 2//省略 3public void onClickMap(View view){ 4//以下の部分をintからDoubleにしました。 5double mkeido = Double.parseDouble(rkeido); 6double mido = Double.parseDouble(rido); 7intent.putExtra("mkeido",mkeido); 8intent.putExtra("mido",mido); 9startActivity(intent); 10

java

1//省略 2public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 3 4//省略 5 public void onMapReady(GoogleMap googleMap) { 6 mMap = googleMap; 7 Intent intent = getIntent(); 8//以下の部分をintExtraからDouboleExtraにしました。 9 double keido =intent.getDoubleExtra("mkeido", (int) -34); 10 double ido = intent.getDoubleExtra("mrido", (int) 151);

次にAPIKeyをもう一度取得して設定します。

ここは省略します。

最後に文字列の値がゼロの時にデフォルト値を入れる設定を足します。

Java

1public class ResultPage extends AppCompatActivity { 2//省略 3 4rkeido =intent.getStringExtra("keido"); 5 if (rkeido.isEmpty()) 6 { 7 rkeido ="-34"; 8 } 9 rido = intent.getStringExtra("ido"); 10 if (rido.isEmpty()){ 11 rido="151"; 12 }

これで画面遷移も無事に通り、かつGoogleMapAPIも落ちずに起動いたしました。
原因としては、おそらく3点です。
1.型がバラバラキャストミス
2.APIKey取得ミス
3.空文字列の時にデフォルト値を入れるコードの抜け

ご回答いただいた方、見てくださった方、どうもありがとうございました。
そして初歩的なミスがたくさんで申し訳ありません。
今後に活かして頑張ります。

投稿2019/05/30 06:03

NiinaDjm

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

java

1 double mkeido = Integer.parseInt(rkeido); 2 double mido = Integer.parseInt(rido);

この2行、double型の変数に値を入れたいのに、Integer.parseInt()を用いているのはおかしくないですか?

投稿2019/05/29 14:36

keicha_hrs

総合スコア6768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NiinaDjm

2019/05/30 00:34

回答ありがとうございます。 MapsActivityの以下の部分の、デフォルトで入らせたい数字をイントにしたまま、ご指摘いただいた部分をイントにしてしまっていました。 double keido = (double) intent.getIntExtra("mkeido", (int) -34); double ido = (double) intent.getIntExtra("mrido", (int) 151); 早速どちらもダブル型にして、型を合わせました。 結果、いまだGoogleMapが開かず、最初の画面に戻ってしまいます(´;ω;`) ご指摘ありがとうございました。 今度はAPIが正しく起動するかのテストの方法を探して試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問