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

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

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

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

Android Studio

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

Q&A

1回答

1376閲覧

AndroidStudioのデータベースについて

hatch0808

総合スコア6

Java

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

Android Studio

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

0グッド

0クリップ

投稿2017/09/07 14:37

GoogleMapsActivityを使って地図アプリを作っているのですが、ちゃんとデータベースを利用するコードを書いたのですが、実際エミュレータで試してみるマップが表示されるだけピンやデータベースに保存した情報は表示されないのですが、何が原因ですか?
原因と解決策を教えてくださいm(_ _)m

java

1public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 2 3 private GoogleMap mMap; 4 5 @Override 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.activity_maps); 9 // Obtain the SupportMapFragment and get notified when the map is ready to be used. 10 SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 11 .findFragmentById(R.id.map); 12 mapFragment.getMapAsync(this); 13 } 14 15 16 /** 17 * Manipulates the map once available. 18 * This callback is triggered when the map is ready to be used. 19 * This is where we can add markers or lines, add listeners or move the camera. In this case, 20 * we just add a marker near Sydney, Australia. 21 * If Google Play services is not installed on the device, the user will be prompted to install 22 * it inside the SupportMapFragment. This method will only be triggered once the user has 23 * installed Google Play services and returned to the app. 24 */ 25 @Override 26 public void onMapReady(GoogleMap googleMap) { 27 mMap = googleMap; 28 29 // Add a marker in Sydney and move the camera 30 //LatLng sydney = new LatLng(-34, 151); 31 //mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 32 //mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 33 mapInit(); 34 } 35 36 private void mapInit() { 37 38 // GoogleMapの初期設定 39 mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 40 41 // 初期表示位置の指定 42 LatLng location = new LatLng(35.690921, 139.700258); // 新宿にする 43 CameraPosition camerapos = new CameraPosition.Builder().target(location).zoom(15.5f).build(); 44 mMap.moveCamera(CameraUpdateFactory.newCameraPosition(camerapos)); 45 46 // UI セッティング 47 UiSettings ui = mMap.getUiSettings(); 48 ui.setCompassEnabled(false); 49 ui.setRotateGesturesEnabled(false); 50 ui.setScrollGesturesEnabled(true); 51 ui.setTiltGesturesEnabled(false); 52 ui.setZoomControlsEnabled(false); 53 ui.setZoomGesturesEnabled(true); 54 55 markersSet(); 56 57 } 58 59 private void markersSet() { 60 61 // マーカーの設定 62 MarkerOptions options = new MarkerOptions(); 63 options.draggable(false); 64 ArrayList<ShopInfo> list = getShopInfoes(); 65 for( ShopInfo tmp : list) { 66 options.position(tmp.getPosition()); 67 options.title(tmp.getName()); 68 options.snippet(tmp.getInformation()); 69 70 mMap.addMarker(options); 71 } 72 73 } 74 75 private ArrayList<ShopInfo> getShopInfoes() { 76 77 /* 78 ArrayList<ShopInfo> ary = new ArrayList<ShopInfo>(); 79 80 ShopInfo tmp1 = new ShopInfo(); 81 tmp1.setPosition(new LatLng(35.696346, 139.698336)); 82 tmp1.setName("ラーメン二郎"); 83 tmp1.setInformation("こってこてのラーメン。完食は難しい!(7/14)"); 84 ary.add(tmp1); 85 86 ShopInfo tmp2 = new ShopInfo(); 87 tmp2.setPosition(new LatLng(35.6990042, 139.6968819)); 88 tmp2.setName("もちもちの木"); 89 tmp2.setInformation("スープがあっつい!(7/8)"); 90 ary.add(tmp2); 91 92 ShopInfo tmp3 = new ShopInfo(); 93 tmp3.setPosition(new LatLng(35.696594, 139.696601)); 94 tmp3.setName("麺屋 翔 本店"); 95 tmp3.setInformation("美味しい塩味ラーメンを味わえる!!!"); 96 ary.add(tmp3); 97 */ 98 99 ShopInfoSQLiteOpenHelper helper = new ShopInfoSQLiteOpenHelper(this); 100 ArrayList<ShopInfo> ary = helper.findAll(); 101 return ary; 102 } 103} 104

java

1public class ShopInfoSQLiteOpenHelper extends SQLiteOpenHelper{ 2 public ShopInfoSQLiteOpenHelper(Context context) { 3 super(context, "RECOM_DB", null, 1); 4 } 5 6 @Override 7 public void onCreate(SQLiteDatabase db) { 8 db.execSQL("CREATE TABLE SHOPINFO" 9 + "(_id INTEGER PRIMARY KEY autoincrement, name TEXT, information TEXT," 10 + "star INTEGER, lat REAL, lng REAL, category INTEGER)"); 11 12 db.execSQL("INSERT INTO SHOPINFO VALUES (1, 'ラーメン二郎(Test)'', 'こってこてのラーメン。完食は難しい!', 3, 35.696346, 139.698336, 1)"); 13 db.execSQL("INSERT INTO SHOPINFO VALUES (2, 'もちもちの木(Test)', 'スープがあっつい!', 4, 35.6990042, 139.6968819, 1)"); 14 db.execSQL("INSERT INTO SHOPINFO VALUES (3, 'サイゼリア(Test)', '手軽にドリア!', 3, 35.697401, 139.6973857, 2)"); 15 db.execSQL("INSERT INTO SHOPINFO VALUES (4, '麺屋 翔 本店(Test)', '美味しい塩味ラーメンを味わえる!!!', 3, 35.696594, 139.696601, 1)"); 16 } 17 18 @Override 19 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 20 21 } 22 23 24 // 全てのデータを検索 25 public ArrayList<ShopInfo>findAll() { 26 ArrayList<ShopInfo> ary = new ArrayList<ShopInfo>(); 27 SQLiteDatabase database = getReadableDatabase(); 28 if ( database == null ) { 29 try { 30 Cursor cur = database.query("SHOPINFO", 31 new String[]{"name", "information", "lat", "lng"}, null, null, null, null, null); 32 while (cur.moveToNext()) { 33 ShopInfo tmp = new ShopInfo(); 34 tmp.setName(cur.getString(0)); 35 tmp.setInformation(cur.getString(1)); 36 double lat = cur.getDouble(2); 37 double lng = cur.getDouble(3); 38 tmp.setPosition(new LatLng(lat, lng)); 39 ary.add(tmp); 40 41 } 42 43 } finally { 44 database.close(); 45 } 46 } 47 return ary; 48 } 49 50 // ファミレスだけを検索 51 public ArrayList<ShopInfo>findByCategory(int kind) { 52 ArrayList<ShopInfo> ary = new ArrayList<ShopInfo>(); 53 SQLiteDatabase database = getReadableDatabase(); 54 if ( database == null) { 55 try { 56 String kindStr = String.valueOf(kind); 57 Cursor cur = database.query("SHOPINFO", 58 new String[]{"name", "information", "lat", "lng"}, 59 "category=?", new String[]{kindStr}, null, null, null); 60 while ( cur.moveToNext()) { 61 ShopInfo tmp = new ShopInfo(); 62 tmp.setName(cur.getString(0)); 63 tmp.setInformation(cur.getString(1)); 64 double lat = cur.getDouble(2); 65 double lng = cur.getDouble(3); 66 tmp.setPosition(new LatLng(lat, lng)); 67 } 68 } finally { 69 database.close(); 70 } 71 } 72 return ary; 73 } 74}

java

1public class ShopInfo { 2 3 4 public int getCategory() { 5 return category; 6 } 7 8 public void setCategory(int category) { 9 this.category = category; 10 } 11 12 public String getInformation() { 13 return information; 14 } 15 16 public void setInformation(String information) { 17 this.information = information; 18 } 19 20 public String getName() { 21 return name; 22 } 23 24 public void setName(String name) { 25 this.name = name; 26 } 27 28 public LatLng getPosition() { 29 return position; 30 } 31 32 public void setPosition(LatLng position) { 33 this.position = position; 34 } 35 36 public int getStar() { 37 return star; 38 } 39 40 public void setStar(int star) { 41 this.star = star; 42 } 43 44 private int category; // お店のカテゴリ 45 private String name; // お店の名前 46 private LatLng position; // お店の場所情報 47 private String information; // 情報 48 private int star; // 評価 49}

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

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

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

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

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

guest

回答1

0

java

1 SQLiteDatabase database = getReadableDatabase(); 2 if ( database == null ) {

databaseがnullの場合に処理を行う、と言うのが間違っていると思います。
さらに、getReadableDatabase()がデータベースのオープンに失敗した時は、結果がnullになるのではなく例外になります。

https://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html#getReadableDatabase()

投稿2017/09/07 16:48

daisuke7

総合スコア1563

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問