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

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

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

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

Android

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

Android Studio

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

0回答

1923閲覧

起動時に強制終了してしまう

sena14

総合スコア109

Java

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

Android

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

Android Studio

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

1クリップ

投稿2018/05/30 19:18

編集2022/01/12 10:55

アプリを開こうとすると強制終了してしまい困っています。

ストアからダウンロードしてandroid7.0以前の端末で試したり、8.0の端末でUSBデバッグをした際は起動するのですが、ストアからダウンロードして8.0で開こうとすると強制終了してしまいます。playConsoleの情報を見る限り起動時データベースを読み込むところでillegalstateexceptionでクラッシュしているようです。
USBデバッグだと強制終了しなかったりと何が原因なのかつかめない状態でいます。
どんな原因なのか教えていただきたいです。
下に起動時のアクティビティを載せておきます。
他に必要なものがあれば教えてください。
よろしくお願いします。

追記
SQLMyWritableのloadを呼ぶと強制終了してしまうことからinitLoad()として一部に減らしてみたところ強制終了が防げました。
処理が多すぎて強制終了してしまうということなのでしょうか?
どのように変更すれば対応できますでしょうか?よろしくお願いします。

更に確認したところ
saveData.winTimes = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.WIN_TIMES))
の行でillegalstateexceptionが発生しているようです。
エラーメッセージを追加しました
8.0でも起動できる機種起動できない機種があることが分かりました

java.lang.RuntimeException:
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2917)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2978)
at android.app.ActivityThread.-wrap14 (ActivityThread.java)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1628)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:154)
at android.app.ActivityThread.main (ActivityThread.java:6646)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1358)
Caused by: java.lang.IllegalStateException:
at android.database.CursorWindow.nativeGetLong (Native Method)
at android.database.CursorWindow.getLong (CursorWindow.java:524)
at android.database.CursorWindow.getInt (CursorWindow.java:591)
at android.database.AbstractWindowedCursor.getInt (AbstractWindowedCursor.java:69)
at pakcage.SQLMyWritable.load (SQLMyWritable.kt:59)
at pakcage.TitleActivity.loadSaveData (TitleActivity.kt:67)
at pakcage.TitleActivity.onCreate (TitleActivity.kt:24)
at android.app.Activity.performCreate (Activity.java:6912)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2870)

import android.content.Intent import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.Button import android.widget.EditText import android.widget.Toast class TitleActivity : AppCompatActivity() { lateinit var saveData: SaveData lateinit var myBgm: MyBgm lateinit var mAdView : AdView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.title) loadSaveData() myBgm = MyBgm(this) this.myBgm.start3() } //ゲームスタート fun gameStart(view: View) { if (!saveData.eventData.initEvent) { /*イベント開始*/ setContentView(R.layout.input_name) } else { val intent = Intent(this@TitleActivity, MainActivity::class.java) startActivity(intent) finish() } } //セーブ fun dataSave() { val sqlMyWritable = SQLMyWritable(this) sqlMyWritable.save(saveData) } //セーブデータ読み込み fun loadSaveData() { val sqlMyWritable = SQLMyWritable(this) saveData = sqlMyWritable.load() } }
import android.content.ContentValues import android.content.Context import android.database.Cursor class SQLMyWritable(val context: Context) { fun initLoad(): SaveData { val openHelper = SQLMyOpenHelper(context) val database = openHelper.getWritableDatabase() var cursor: Cursor? = null cursor = database.query( SQLMyContract.SaveData.TABLE_NAME, null, null, null, null, null, null, null ) val saveData = SaveData() cursor.moveToFirst() saveData.myCharacter.Name = cursor.getString(cursor.getColumnIndex(SQLMyContract.SaveData.MY_NAME)) saveData.eventData.initEvent = returnBoolean(cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.INITEVENT))) return saveData } //読み込み fun load(): SaveData { val openHelper = SQLMyOpenHelper(context) val database = openHelper.getWritableDatabase() var cursor: Cursor? = null cursor = database.query( SQLMyContract.SaveData.TABLE_NAME, null, null, null, null, null, null, null ) val saveData = SaveData() cursor.moveToFirst() saveData.myCharacter.Name = cursor.getString(cursor.getColumnIndex(SQLMyContract.SaveData.MY_NAME)) saveData.myCharacter.HP = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.MY_HP)) saveData.myCharacter.MaxHP = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.MY_MAX_HP)) saveData.myCharacter.MP = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.MY_MP)) saveData.myCharacter.MaxMP = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.MY_MAX_MP)) saveData.myCharacter.STR = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.MY_STR)) saveData.myCharacter.DEF = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.MY_DEF)) saveData.myCharacter.AGI = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.MY_AGI)) saveData.myCharacter.INT = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.MY_INT)) saveData.myCharacter.EXP = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.MY_EXP)) saveData.myCharacter.theEXP = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.MY_THE_EXP)) saveData.myCharacter.EXP_BONUS = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.MY_EXP_BONUS)) saveData.eventData.boss1 = returnBoolean(cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.BOSS1))) saveData.eventData.boss2 = returnBoolean(cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.BOSS2))) saveData.eventData.boss3 = returnBoolean(cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.BOSS3))) saveData.eventData.boss4 = returnBoolean(cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.BOSS4))) saveData.eventData.boss5 = returnBoolean(cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.BOSS5))) saveData.eventData.boss6 = returnBoolean(cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.BOSS6))) saveData.eventData.boss7 = returnBoolean(cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.BOSS7))) saveData.eventData.boss8 = returnBoolean(cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.BOSS8))) saveData.eventData.boss9 = returnBoolean(cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.BOSS9))) saveData.eventData.boss10 = returnBoolean(cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.BOSS10))) saveData.eventData.initEvent = returnBoolean(cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.INITEVENT))) saveData.floor = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.NOW_FLOOR)) saveData.isBattle = returnBoolean(cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.IS_BATTLE))) saveData.enemyHP = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.ENEMY_HP)) saveData.enemyNo = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.ENEMY_NO)) saveData.maxFloor = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.MAX_FLOOR)) saveData.startFloor = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.START_FLOOR)) saveData.winTimes = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.WIN_TIMES)) saveData.escapeTimes = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.ESCAPE_TIMES)) saveData.gameOverTimes = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.GAME_OVER_TIMES)) saveData.EXP = cursor.getInt(cursor.getColumnIndex(SQLMyContract.SaveData.EXP)) database.close() cursor.close() return saveData } fun returnBoolean(i: Int): Boolean { var b = false when (i) { 0 -> b = false 1 -> b = true } return b } }

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

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

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

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

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

m.ts10806

2018/05/30 21:20

「android7.0以前の端末」ではどうなるのでしょうか
sena14

2018/05/31 05:43

手元にある端末二つでしか確認できていませんが強制終了せずに起動できます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問