I looked at stackoverflow to solve my problem and found something very good, but it doesn’t work for me, or I'm just dumb to see it ( How to implement OnFragmentInteractionListener )
I want to place a fragment inside a frame, so I created it, etc. I have to implicate the interface and its method. I (think) I did it, but my application crashes every time ...
* Edit: My application crashes when I call openHome or openRecommended, the onCreate method works, I get these errors, but everything displays correctly.
This is my code:
MainActivity.java
import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity implements HomeFragment.OnFragmentInteractionListener, RecommendedFragment.OnFragmentInteractionListener { FragmentTransaction fragmentTransaction; HomeFragment homeFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); homeFragment = new HomeFragment(); getFragmentManager().beginTransaction().add(R.id.mainFrame, homeFragment).commit(); } protected void openHome(View view) { System.out.println("Success"); } public void openRecommended(View view) { Intent recommendedIntent = new Intent(this, RecommendedFragment.class); startActivity(recommendedIntent); RecommendedFragment recommendedFragment = new RecommendedFragment(); getFragmentManager().beginTransaction().replace(R.id.mainFrame, recommendedFragment).commit(); } @Override public void onFragmentInteractionHome(Uri uri) { } @Override public void onFragmentInteractionRecommended(Uri uri) { } }
HomeFragment.java
import android.app.Activity; import android.app.Fragment; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class HomeFragment extends Fragment { private OnFragmentInteractionListener mListener; public static HomeFragment newInstance() { HomeFragment fragment = new HomeFragment(); return fragment; } public HomeFragment() {
The recommended snippet looks the same, except that some methods have a different name.
I always get this error:
java.lang.RuntimeException: unable to start ComponentInfo activity {com.domain.app/com.domain.app.MainActivity}: java.lang.ClassCastException: com.domain.app.MainActivity@b1d296b0 must implement OnFragmentInteractionListener at android.app.ActivityThread.performLaunchActivity (ActivityThread. java: 2195) at android.app.ActivityThread.access $ 800 (ActivityThread.java:135) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java: 1196) on android.os.Handler.dispatchMessage (Handler.java:102) on android.os.Looper.loop (Looper.java:136) at android.app.ActivityThread.main (ActivityThread.java data 017) in java. lang.reflect.Method.invokeNative (native method) in java.lang.reflect.Method.invoke (Method.java∗15) at com.android.internal.os.Zy goteInit $ MethodAndArgsCaller.run (ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java=95) in dalvik.system.NativeStart.main (native method) Called: java.lang.ClassCastException : com.domain.app.MainActivity@b1d296b0 should implement OnFragmentInteractionListener in com.domain.app.HomeFragment.onAttach (HomeFragment.java:74) in android.app.FragmentManagerImpl.moveToState (FragmentManager.java:849) in android.app.FragmentManagerImpl.moveTomento .java: 1062) on android.app.BackStackRecord.run (BackStackRecord.java:684) in android.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:1447) at android.app.Activity.performStart (Activity.java:5240) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2168) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java: 2245) at android.app.ActivityThread.access $ 800 (ActivityThread.java:135) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1196) on android.os.Handler.dispatchMessage (Handler.java:102) on android.os.Looper.loop (Looper.java:136) at android.app.ActivityThread.main (ActivityThread.java=017) in java.lang.reflect.Method.invokeNative (native method) in java.lang.reflect .Method.invoke (Method.java∗15) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main (ZygoteInit.javahaps95 ) in dalvik.system.NativeStart.main (native method)
I really need help here, I'm stuck for hours ...
John
java android interface android-fragments fragment
Jrsz
source share