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

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

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

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

受付中

android studio 3.1.3 sqlite に画面に表示されているデータを保存しようとするとアプリが停止する

totoro_mini
totoro_mini

総合スコア6

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0回答

0グッド

0クリップ

1097閲覧

投稿2018/08/12 08:53

編集2018/08/12 09:19

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)android studio で緯度経度をもとに地図を表示し、同時にそのデータをSQLITEに保存しようとしています。
地図表示ボタンをクリックすると以下のエラーメッセージが発生しました。

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

アプリが停止しました。

該当のソースコード

android

1import android.Manifest; 2import android.content.Intent; 3import android.content.pm.PackageManager; 4import android.database.sqlite.SQLiteDatabase; 5import android.database.sqlite.SQLiteStatement; 6import android.location.Location; 7import android.location.LocationListener; 8import android.location.LocationManager; 9import android.net.Uri; 10import android.support.v4.app.ActivityCompat; 11import android.support.v7.app.AppCompatActivity; 12import android.os.Bundle; 13import android.util.Log; 14import android.view.View; 15import android.widget.EditText; 16import android.widget.TextView; 17 18import java.io.UnsupportedEncodingException; 19import java.net.URLEncoder; 20import java.text.DateFormat; 21import java.text.SimpleDateFormat; 22import java.util.Calendar; 23import java.util.Date; 24import java.util.Locale; 25 26public class MainActivity extends AppCompatActivity { 27 28 private double _latitude = 0; 29 private double _longitude = 0; 30 31 private TextView _tvLatitude; 32 private TextView _tvLongitude; 33 34 35 private int gyoNo = 0; 36 37 @Override 38 protected void onCreate(Bundle savedInstanceState) { 39 super.onCreate(savedInstanceState); 40 setContentView(R.layout.activity_main); 41 42 43 44 45 _tvLatitude = findViewById(R.id.tvLatitude); 46 _tvLongitude = findViewById(R.id.tvLongitude); 47 48 LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 49 GPSLocationListner locationListner = new GPSLocationListner(); 50 if (ActivityCompat.checkSelfPermission(this, Manifest.permission. 51 ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 52 String[] permissions = {Manifest.permission.ACCESS_FINE_LOCATION}; 53 ActivityCompat.requestPermissions(MainActivity.this,permissions,1000); 54 55 // TODO: Consider calling 56 // ActivityCompat#requestPermissions 57 // here to request the missing permissions, and then overriding 58 // public void onRequestPermissionsResult(int requestCode, String[] permissions, 59 // int[] grantResults) 60 // to handle the case where the user grants the permission. See the documentation 61 // for ActivityCompat#requestPermissions for more details. 62 return; 63 } 64 locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, 65 locationListner); 66 } 67 68 69 public void onMapSearchButtonClick(View view) { 70 EditText etSearchWord = findViewById(R.id.etSearchWord); 71 String searchWord = etSearchWord.getText().toString(); 72 73 try { 74 searchWord = URLEncoder.encode(searchWord, "UTF-8"); 75 String uriStr = "geo:0.0?q=" + searchWord; 76 Uri uri = Uri.parse(uriStr); 77 Intent intent = new Intent(Intent.ACTION_VIEW, uri); 78 startActivity(intent); 79 80 } 81 82 catch (UnsupportedEncodingException ex) { 83 Log.e("IntentStartAtivity","検索キーワード変換失敗",ex); 84 } 85 86 } 87 88 public void onMapShowCurrentButtonClick(View view) { 89 90 gyoNo++; 91 // DateFormat df = new SimpleDateFormat("yyyy/MM/dd", Locale.JAPAN); 92 // Calendar cl = Calendar.getInstance(); 93 // cl.setTime(new Date()); 94 // String str1 = df.format(cl); 95 96 DbOpenHelper helper = new DbOpenHelper(MainActivity.this); 97 SQLiteDatabase db = helper.getWritableDatabase(); 98 try { 99 String sqlInsert = "INSERT INTO MAP_TBL (_id,lati,longi,ichi,note) VALUES (?,?,?,?,?)"; 100 SQLiteStatement stmt = db.compileStatement(sqlInsert); 101 stmt.bindLong(1,gyoNo); 102 stmt.bindDouble(2,_latitude); 103 stmt.bindDouble(3,_longitude); 104 stmt.bindString(4,"---"); 105 stmt.bindString(5,"--:--"); 106 stmt.executeInsert(); 107 108 109 110 } 111 finally { 112 db.close(); 113 } 114 115 116 117 118 119 } 120 121 122 123 124 125 private class GPSLocationListner implements LocationListener { 126 @Override 127 public void onLocationChanged(Location location) { 128 _latitude = location.getLatitude(); 129 _longitude = location.getLongitude(); 130 _tvLatitude.setText(Double.toString(_latitude)); 131 _tvLongitude.setText(Double.toString(_longitude)); 132 133 } 134 135 136 137 @Override 138 public void onStatusChanged(String provider, int status, Bundle extras) { 139 } 140 141 @Override 142 public void onProviderEnabled(String provider) { 143 } 144 145 @Override 146 public void onProviderDisabled(String provider) { 147 } 148 149 } 150 151 public void onRequestPermissionsResult(int requestCode,String[] permissions, 152 int[] grantResults) { 153 if(requestCode == 1000 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 154 LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 155 GPSLocationListner locationListner = new GPSLocationListner(); 156 if(ActivityCompat.checkSelfPermission(MainActivity.this, 157 Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 158 return; 159 } 160 locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0, 161 locationListner); 162 } 163 }

試したこと

ここに問題に対して試したことを記載してください。
public void onMapShowCurrentButtonClick(View view)

でSQLITEへの書き込みの部分はコメントアウトすると正常に動きます。

補足情報(FW/ツールのバージョンなど)

androidは3.1.3です。
ここにより詳細な情報を記載してください。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2018/08/15 05:46

こちらの質問が他のユーザーから「過去の低評価」という指摘を受けました。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。