Kotlinでフライトログをつけるアプリを目指して作っています。
ログはテキストファイルで読み書きできるようにしています。
現在編集画面をコーディングしているのですが実行してみるとテキストファイルの保存ができません。
エラーの原因は何でしょうか。アドバイスをよろしくおねがいします。
<実行時のログに表示されるエラー>
E/ANDR-PERF: IPref::tryGetService failed!
<試したこと>
print("example \n example") というように書いていたのを
println(value)
println(value2)... に書き換えた
<環境>
Android Studio 4.1.2
Kotlin
1import android.annotation.SuppressLint 2import android.app.DatePickerDialog 3import android.content.Context 4import androidx.appcompat.app.AppCompatActivity 5import android.os.Bundle 6import android.provider.CalendarContract 7import android.text.InputType 8import android.view.View 9import android.widget.Button 10import android.widget.DatePicker 11import android.widget.EditText 12import android.widget.Toast 13import java.io.OutputStream 14import java.io.OutputStreamWriter 15import java.io.PrintWriter 16import java.lang.Exception 17import java.text.SimpleDateFormat 18import java.time.Month 19import java.time.Year 20import java.util.* 21 22class WriteOrEditLog : AppCompatActivity() { 23 @SuppressLint("ShowToast") 24 override fun onCreate(savedInstanceState: Bundle?) { 25 super.onCreate(savedInstanceState) 26 setContentView(R.layout.activity_write_or_edit_log) 27 //load contents 28 val flightNumber = findViewById<EditText>(R.id.flight_number).text.toString() 29 val flightDate = findViewById<EditText>(R.id.flight_date).text.toString() 30 var aircraftModel = findViewById<EditText>(R.id.aircraft).text.toString() 31 val depICAO = findViewById<EditText>(R.id.dep_icao).text.toString() 32 var depGate = findViewById<EditText>(R.id.dep_gate).text.toString() 33 var depSchTime = findViewById<EditText>(R.id.dep_sch_time).text.toString() 34 var startTime = findViewById<EditText>(R.id.start_time).text.toString() 35 var toTime = findViewById<EditText>(R.id.to_time).text.toString() 36 var toRunway = findViewById<EditText>(R.id.to_runway).text.toString() 37 val desICAO = findViewById<EditText>(R.id.des_icao).text.toString() 38 var desGate = findViewById<EditText>(R.id.des_gate).text.toString() 39 var desSchTime = findViewById<EditText>(R.id.des_sch_time).text.toString() 40 var stopTime = findViewById<EditText>(R.id.stop_time).text.toString() 41 var ldTime = findViewById<EditText>(R.id.ld_time).text.toString() 42 var ldRunway = findViewById<EditText>(R.id.ld_runway).text.toString() 43 var routeData = findViewById<EditText>(R.id.route_data).text.toString() 44 var memo = findViewById<EditText>(R.id.memo).text.toString() 45 //load object 46 val save = findViewById<Button>(R.id.save) 47 //others 48 var mFileName: String? = null 49 50 //save action 51 save.setOnClickListener { 52 if (flightNumber.isEmpty() || flightDate.isEmpty() || depICAO.isEmpty() || desICAO.isEmpty()) { 53 Toast.makeText(this, "Input is not enough.", Toast.LENGTH_SHORT) 54 } 55 56 //generate file name 57 if (mFileName?.isEmpty() == true) { 58 val date = Date(System.currentTimeMillis()) 59 val sdf = SimpleDateFormat("yyyyMMdd_HHmmssSSS", Locale.JAPAN) 60 mFileName = sdf.format(date) + ".txt" 61 } 62 63 //detect empty form then set value "Nil" 64 if (aircraftModel.isEmpty()) {aircraftModel = "Nil"} 65 if (depGate.isEmpty()) {depGate = "Nil"} 66 if (depSchTime.isEmpty()) {depSchTime = "Nil"} 67 if (startTime.isEmpty()) {startTime = "Nil"} 68 if (toRunway.isEmpty()) {toRunway = "Nil"} 69 if (toTime.isEmpty()) {toTime = "Nil"} 70 if (desGate.isEmpty()) {desGate ="Nil"} 71 if (desSchTime.isEmpty()) {desSchTime = "Nil"} 72 if (stopTime.isEmpty()) {stopTime = "Nil"} 73 if (ldRunway.isEmpty()) {ldRunway ="Nil"} 74 if (ldTime.isEmpty()) {ldTime = "Nil"} 75 if (routeData.isEmpty()) {routeData = "Nil"} 76 if (memo.isEmpty()) {memo = "Nil"} 77 78 //save 79 val out: OutputStream? 80 val writer: PrintWriter? 81 try { 82 out = this.openFileOutput(mFileName, Context.MODE_PRIVATE) 83 writer = PrintWriter(OutputStreamWriter(out, "UTF-8")) 84 writer.run { 85 println(flightNumber) 86 println(flightDate) 87 println(aircraftModel) 88 println(depICAO) 89 println(depGate) 90 println(depSchTime) 91 println(startTime) 92 println(toRunway) 93 println(toTime) 94 println(desICAO) 95 println(desGate) 96 println(desSchTime) 97 println(stopTime) 98 println(ldRunway) 99 println(ldTime) 100 println(routeData) 101 println(memo) 102 close() 103 } 104 out.close() 105 }catch (e: Exception) { 106 Toast.makeText(this, "File save error!", Toast.LENGTH_LONG).show() 107 } 108 } 109 110 } 111}
字数制限のためレイアウトファイルはこちら(GoogleDrive)にあります。
回答1件
あなたの回答
tips
プレビュー