🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

Android

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

Android Studio

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

Q&A

解決済

1回答

1181閲覧

遷移後のボタンクリックエラーについて

ToaZI

総合スコア39

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2021/02/23 15:13

編集2021/02/24 04:52

現在、フラグメントが画面遷移した後、自動的にビデオの録画を開始するアプリを作っています。
以前はボタンをクリックしたときにON、OFFが切り替え録画をしていました。

java

1public void onViewCreated(final View view, Bundle savedInstanceState) { 2 //Viewリソースの指定 3 ViewCompat.setNestedScrollingEnabled(,true); 4 mTextureView = (AutoFitTextureView) view.findViewById(R.id.texture); 5 //RYUKA ADD 6 //撮影ボタン 7 bt_start = view.findViewById(R.id.bt_start); 8 9 bt_start.setOnClickListener(new View.OnClickListener() { 10 @Override 11 public void onClick(View view) { 12 if (flg) { 13 flg = false; 14 //撮影を終了する 15 stopRecordingVideo(); 16 bt_start.setText("START"); 17 } else { 18 flg = true; 19 //撮影を終了する 20 startRecordingVideo(); 21 bt_start.setText("STOP"); 22 ; 23  } 24 } 25 });

今回画面遷移の際に遷移前からの値を条件に自動的に録画を始める仕様に変更したくコーディングしました。

java

1public void onViewCreated(final View view, Bundle savedInstanceState) { 2 mTextureView = (AutoFitTextureView) view.findViewById(R.id.texture); 3 mlet = getArguments().getInt("KEY_NAME"); 4 bt_start = view.findViewById(R.id.bt_start); 5 if(mlet == 1) { 6 (view.findViewById(R.id.bt_start)).setEnabled(true); 7 //↓ここの処理について 8 **__startRecordingVideo();__** 9       //↑ここの処理について 10 bt_start.setOnClickListener(new View.OnClickListener() { 11 @Override 12 public void onClick(View view) { 13 stopRecordingVideo(); 14 } 15 }); 16 }else{ 17 (view.findViewById(R.id.bt_start)).setEnabled(false); 18 } 19 }

上記の処理を行いたいのですが、画面遷移時にエラーが出てしまいました。

※遷移時ではなくボタンを押したときでした。

プログラミング歴が浅く、浅はかな推測で大変お恥ずかしいのですが
public void ○○(View view)関係の原因だと考えています。

お手数ですが、原因と対策方法を教えていただければ幸いです。

よろしくお願いいたします。

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

D/AudioTrack: stop(sessionID=73465) E/MediaRecorder: stop called in an invalid state: 1 D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.myapplication, PID: 16982 java.lang.IllegalStateException at android.media.MediaRecorder.stop(Native Method) at com.example.myapplication.video.VideoFragment.stopRecordingVideo(VideoFragment.java:519) at com.example.myapplication.video.VideoFragment$3.onClick(VideoFragment.java:199) at android.view.View.performClick(View.java:7252) at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992) at android.view.View.performClickInternal(View.java:7229) at android.view.View.access$3500(View.java:821) at android.view.View$PerformClick.run(View.java:27759) at android.os.Handler.handleCallback(Handler.java:914) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:224) at android.app.ActivityThread.main(ActivityThread.java:7560) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) I/Process: Sending signal. PID: 16982 SIG: 9

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

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

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

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

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

y_waiwai

2021/02/23 23:34

エラーが出るならエラーメッセージを提示しましょう
ToaZI

2021/02/24 00:56

ありがとうございます。 エラーメッセージを追加しました。 よろしくお願いします。
hoshi-takanori

2021/02/24 01:29

エラーメッセージによると stopRecordingVideo で落ちてるので、「画面遷移時にエラー」ではなく、ボタンを押すと落ちるってことでしょうか? なお、stop で落ちるのは start に失敗しているせいという説もあるので、画面遷移直後に start すると正常に start できてない可能性もありますね。start を遅延呼び出ししてみたら変わるかも?
ToaZI

2021/02/24 04:53

遷移時ではなくボタンを押した時点でした。 ありがとうございます。
guest

回答1

0

自己解決

View viewは全く関係なく画面生成が追いついていないのが原因でした。

遅延処理を0.5秒行いエラーを解決することができました。

投稿2021/02/24 10:08

ToaZI

総合スコア39

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問