前提・実現したいこと
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); } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。