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

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

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

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

Android Studio

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

Kotlin

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

Q&A

解決済

1回答

2015閲覧

写真を撮影して、それを利用するAndroidアプリを作成したい

waribashi

総合スコア30

Android

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

Android Studio

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

Kotlin

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

0グッド

0クリップ

投稿2020/05/22 15:30

前提

写真を撮影し、その写真を利用するようなAndroidアプリを作成したかったので、その為の勉強としてこのサイトを参考にAndroidStudioでAndroidアプリを作成していました。

しかし、サムネイルを取得するにある以下のコードを貼り付けた所、overrideonActivityResultに赤波線が表示されます。

Kotlin

1 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { 2 if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 3 val imageBitmap = data.extras.get("data") as Bitmap 4 imageView.setImageBitmap(imageBitmap) 5 } 6 }

どのように解決したらいいのか分からず、質問させていただきました。

赤波線のメッセージ

override
→ "onActivityResult" overrides nothing

onActivityResult
→ Overriding method should call super onActivityResult
Inspection into:Some methods, such as view#onDetachedFromwindow, require that you also call the super implementation as part of your method

Issue id: Missing Super Call

試した事

このサイトを参考にコメントが付いている一行を増やしてみました。

Kotlin

1 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { 2 //下の一行を追加 3 super.onActivityResult(requestCode, resultCode, intent); 4 if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 5 val imageBitmap = data.extras?.get("data") as Bitmap 6 imageView.setImageBitmap(imageBitmap) 7 } 8 }

結果:エラーメッセージが

Accidental override: The following declarations have the same JVM signature (onActivityresult IILandroid/content/intent):V):

  • public open fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent): Unit defined in com.example.cameratest.MainActivity
  • protected/protected and package/open fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?): Unut defined in com.example.cameratest.MainActivity

に変化しました。

環境

Android Studio 3.5.1
Build #AI-191.8026.42.35.5900203, built on September 26, 2019
JRE: 1.8.0_202-release-1483-b03 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0

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

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

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

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

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

guest

回答1

0

ベストアンサー

onActivityResult()メソッド自体をコピーペーストするのではなく、エディター上で

kotlin

1 override fun onA

あたりまで入力してみてください。すると、入力補完候補がずらっと並びますが、その中にonActivityResultもあるはずです。ここから選択して入力完了させると、エラーにはならないと思います。(overrideとfunも補完候補から選んでも構いません。)

なんかAndroid Studioの動きがおかしいですね。メニューのCode→Override Methodsの中にも見当たらないし。バグ臭いような・・・。


あー、わかった。メソッドの型が違いますね。

サンプルページに記されているのは

kotlin

1 override fun onActivityResult(Int, Int, Intent)

onActivityResult()の正確な型は

kotlin

1 override fun onActivityResult(Int, Int, Intent?)

第3引数がIntent?型であるべきところがIntent型になっていますね。これが異なっているので、型不一致でonActivityResultのoverrideと見なされず、エラーになってしまうようですね。バグでもないみたい。

エラーになったペーストも、第3引数の型をIntentからIntent?に改め、superを追記すれば赤波線は消えるのではないでしょうか。(第3引数をnull許容型にすることで新たなエラーが生じることになりますが、敢えて置いておきます)

要するに、サンプルが間違っているということか。

投稿2020/05/23 07:11

編集2020/05/23 08:36
keicha_hrs

総合スコア6768

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

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

waribashi

2020/05/25 13:16

返答ありがとうございます! 解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問