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

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

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

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

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

Android

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

Android Studio

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

Q&A

解決済

1回答

379閲覧

ナビゲーションドロワーを使用したアプリでドロワーアイコンをタップするとアプリが停止する問題を解決したい

Nustin053

総合スコア12

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2018/07/30 02:21

編集2018/08/19 01:05

前提・実現したいこと

Android Studioでナビゲーションドロワーを使用したアプリを作っています。
Flagmentを使用して画面の切り替えを行うためのプログラムを入力しました。
しかし実際にデバックして
ドロワーを開く>ドロワーアイコンをタップをすると「アプリが停止しました」とアプリをデバックしたスマートフォンに表示されます。

主な使用ファイル
Java---
MainActivity
HomeFragment
DayFragment
ListFragment

res>layout---
activity_main.xml
app_bar_main.xml
content_main.xml
fragment_home.xml
fragment_day.xml
fragment_list.xml
nav_header_main.xml

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

アプリが停止しました (スマートフォン)

Android studio

08/04 23:46:28: Launching app $ adb install-multiple -r -t -p com.websarver.wings.android.mamaraku C:\Users\nagi0\Desktop\MamaRaku\app\build\intermediates\split-apk\debug\slices\slice_2.apk Split APKs installed $ adb shell am start -n "com.websarver.wings.android.mamaraku/com.websarver.wings.android.mamaraku.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER Client not ready yet..Waiting for process to come online Waiting for process to come online Connected to process 19960 on device sony-e6853-CB5A29KZYU Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page. V/BoostFramework: mAcquireFunc method = public int com.qualcomm.qti.Performance.perfLockAcquire(int,int[]) V/BoostFramework: mReleaseFunc method = public int com.qualcomm.qti.Performance.perfLockRelease() mAcquireTouchFunc method = public int com.qualcomm.qti.Performance.perfLockAcquireTouch(android.view.MotionEvent,android.util.DisplayMetrics,int,int[]) V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@2ff37f8 D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: com.websarver.wings.android.mamaraku, PID: 19960 java.lang.RuntimeException: com.websarver.wings.android.mamaraku.MainActivity@8355733 must implement OnFragmentInteractionListener at com.websarver.wings.android.mamaraku.HomeFragment.onAttach(HomeFragment.java:83) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1372) at android.support.v4.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1188) at android.support.v4.app.FragmentTransition.calculateFragments(FragmentTransition.java:1071) at android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:115) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2380) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2338) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2245) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:703) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:241) at android.app.ActivityThread.main(ActivityThread.java:6274) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) I/art: Do partial code cache collection, code=24KB, data=29KB I/art: After code cache collection, code=17KB, data=25KB Increasing code cache capacity to 128KB

該当のソースコード

HomeFragment

1package com.websarver.wings.android.mamaraku; 2 3import android.content.Context; 4import android.net.Uri; 5import android.os.Bundle; 6import android.support.v4.app.Fragment; 7import android.view.LayoutInflater; 8import android.view.View; 9import android.view.ViewGroup; 10 11 12/** 13 * A simple {@link Fragment} subclass. 14 * Activities that contain this fragment must implement the 15 * {@link HomeFragment.OnFragmentInteractionListener} interface 16 * to handle interaction events. 17 * Use the {@link HomeFragment#newInstance} factory method to 18 * create an instance of this fragment. 19 */ 20public class HomeFragment extends Fragment { 21 // TODO: Rename parameter arguments, choose names that match 22 // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER 23 private static final String ARG_PARAM1 = "param1"; 24 private static final String ARG_PARAM2 = "param2"; 25 26 // TODO: Rename and change types of parameters 27 private String mParam1; 28 private String mParam2; 29 30 private OnFragmentInteractionListener mListener; 31 32 public HomeFragment() { 33 // Required empty public constructor 34 } 35 36 /** 37 * Use this factory method to create a new instance of 38 * this fragment using the provided parameters. 39 * 40 * @param param1 Parameter 1. 41 * @param param2 Parameter 2. 42 * @return A new instance of fragment HomeFragment. 43 */ 44 // TODO: Rename and change types and number of parameters 45 public static HomeFragment newInstance(String param1, String param2) { 46 HomeFragment fragment = new HomeFragment(); 47 Bundle args = new Bundle(); 48 args.putString(ARG_PARAM1, param1); 49 args.putString(ARG_PARAM2, param2); 50 fragment.setArguments(args); 51 return fragment; 52 } 53 54 @Override 55 public void onCreate(Bundle savedInstanceState) { 56 super.onCreate(savedInstanceState); 57 if (getArguments() != null) { 58 mParam1 = getArguments().getString(ARG_PARAM1); 59 mParam2 = getArguments().getString(ARG_PARAM2); 60 } 61 } 62 63 @Override 64 public View onCreateView(LayoutInflater inflater, ViewGroup container, 65 Bundle savedInstanceState) { 66 // Inflate the layout for this fragment 67 return inflater.inflate(R.layout.fragment_home, container, false); 68 } 69 70 // TODO: Rename method, update argument and hook method into UI event 71 public void onButtonPressed(Uri uri) { 72 if (mListener != null) { 73 mListener.onFragmentInteraction(uri); 74 } 75 } 76 77 @Override 78 public void onAttach(Context context) { 79 super.onAttach(context); 80 if (context instanceof OnFragmentInteractionListener) { 81 mListener = (OnFragmentInteractionListener) context; 82 } else { 83 throw new RuntimeException(context.toString() 84 + " must implement OnFragmentInteractionListener"); 85 } 86 } 87 88 @Override 89 public void onDetach() { 90 super.onDetach(); 91 mListener = null; 92 } 93 94 /** 95 * This interface must be implemented by activities that contain this 96 * fragment to allow an interaction in this fragment to be communicated 97 * to the activity and potentially other fragments contained in that 98 * activity. 99 * <p> 100 * See the Android Training lesson <a href= 101 * "http://developer.android.com/training/basics/fragments/communicating.html" 102 * >Communicating with Other Fragments</a> for more information. 103 */ 104 public interface OnFragmentInteractionListener { 105 // TODO: Update argument type and name 106 void onFragmentInteraction(Uri uri); 107 } 108}

試したこと

デバックのし直し、ビルドクリーン

補足情報(FW/ツールのバージョンなど)

Android Studio 3.1.3

API:19(Android 4.4)

Android 7.1.1

Windows 10

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/08/18 15:13

該当のソースコードに実行時のエラーが書かれていますが、これは「発生している問題・エラーメッセージ」欄に書くべきことです。また、そのエラーはググってみましたか?
退会済みユーザー

退会済みユーザー

2018/08/18 15:13

それから、そのエラーがでている箇所のソースコードが必要だと思います。(この場合はHomeFragment.java
Nustin053

2018/08/19 01:06

ご指摘ありがとうございます。内容を変更しました。確認をお願いします。
guest

回答1

0

ベストアンサー

onAttachの中で、アタッチ先のContext(今回はMainActivity)に
OnFragmentInteractionListener が継承されてなければ例外を投げるようになっています。

必要であればActivityにOnFragmentInteractionListenerを継承させ、
なければOnFragmentInteractionListenerごと削除するのをおすすめします。


おそらく、New→FragmentでFragmentを自動生成したのではないでしょうか。
作成時に "Include interface callbacks?" にチェックが入っているとOnFragmentInteractionListenerが勝手に作られるらしいです。

自動生成も便利ですが、New→Java ClassからFragmentを自力で作ってみるのもいいかと・・・

投稿2018/08/19 01:35

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Nustin053

2018/08/19 01:48

Helpありがとうございます。先ほど回答してもらったようにOnFragmentInteractionListenerをプログラムから削除して停止する問題が解決しました。本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問