前提・実現したいこと
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
回答1件
あなたの回答
tips
プレビュー