tccpg288
tccpg288

Reputation: 3352

Error Inflating Activity from Fragment: InflateException

I have a fragment, and I want to click on a button in the fragment to open a corresponding Activity that also hosts a fragment.

I am trying to test how the Activity appears (after button click) and am receiving what appears to be an inflation error. Here is the first fragment containing the button to view the next fragment:

HomePollsFragment.Java

 mLatestTestButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent latestActivity = new Intent(getActivity().getApplicationContext(), LatestActivity.class);
            startActivity(latestActivity);
        }
    });

And then here is the code for the activity that is opened on button click:

public class LatestActivity extends AppCompatActivity implements LatestFragment.OnFragmentInteractionListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_latest);

    // Check that the activity is using the layout version with
    // the fragment_container FrameLayout
    if (findViewById(R.id.latest_fragment_container) != null) {

        // However, if we're being restored from a previous state,
        // then we don't need to do anything and should return or else
        // we could end up with overlapping fragments.
        if (savedInstanceState != null) {
            return;
        }

        // Create a new Fragment to be placed in the activity layout
        LatestFragment latestFragment = new LatestFragment();

        // In case this activity was started with special instructions from an
        // Intent, pass the Intent's extras to the fragment as arguments
        latestFragment.setArguments(getIntent().getExtras());

        // Add the fragment to the 'fragment_container' FrameLayout
        getSupportFragmentManager().beginTransaction()
                .add(R.id.latest_fragment_container, latestFragment).commit();
    }



}

@Override
public void onFragmentInteraction(Uri uri) {

 }
}

The error I am receiving is below and appears to be related to the following line:

setContentView(R.layout.activity_latest);

Error:

06-27 22:35:47.787 4252-4252/com.sourcey.materialloginexample E/AndroidRuntime: FATAL EXCEPTION: main
                                                                            java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sourcey.materialloginexample/com.troychuinard.fanpolls.LatestActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
                                                                                at android.app.ActivityThread.access$600(ActivityThread.java:141)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                at android.os.Looper.loop(Looper.java:137)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5103)
                                                                                at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                at java.lang.reflect.Method.invoke(Method.java:525)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                                                at dalvik.system.NativeStart.main(Native Method)
                                                                             Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
                                                                                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
                                                                                at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
                                                                                at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                                                at com.troychuinard.fanpolls.LatestActivity.onCreate(LatestActivity.java:14)
                                                                                at android.app.Activity.performCreate(Activity.java:5133)
                                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
                                                                                at android.app.ActivityThread.access$600(ActivityThread.java:141) 
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
                                                                                at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                                at android.os.Looper.loop(Looper.java:137) 
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5103) 
                                                                                at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                at java.lang.reflect.Method.invoke(Method.java:525) 
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                                                                                at dalvik.system.NativeStart.main(Native Method) 
                                                                             Caused by: java.lang.NullPointerException: name == null
                                                                                at java.lang.VMClassLoader.findLoadedClass(Native Method)
                                                                                at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:354)
                                                                                at java.lang.ClassLoader.loadClass(ClassLoader.java:491)
                                                                                at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
                                                                                at android.support.v4.app.Fragment.isSupportFragmentClass(Fragment.java:454)
                                                                                at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2252)
                                                                                at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120)
                                                                                at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:356)
                                                                                at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31)
                                                                                at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79)
                                                                                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
                                                                                at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                                                                                at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                                at com.troychuinard.fanpolls.LatestActivity.onCreate(LatestActivity.java:14) 
                                                                                at android.app.Activity.performCreate(Activity.java:5133) 
                                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
                                                                                at android.app.ActivityThread.access$600(ActivityThread.java:141) 
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
                                                                                at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                                at android.os.Looper.loop(Looper.java:137) 
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5103) 
                                                                                at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                at java.lang.reflect.Method.invoke(Method.java:525) 
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                                                                                at dalvik.system.NativeStart.main(Native Method) 

activity_latest.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

    <fragment
        android:id="@+id/latest_fragment_container"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp" />

Upvotes: 0

Views: 162

Answers (2)

ikhsanudinhakim
ikhsanudinhakim

Reputation: 1634

That because you have a wrong on your activity_latest.xml. You tried to add your LatestFragment to Fragment. You can add fragment into ViewGroup like FrameLayout. Change your code like here.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/latest_fragment_container"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp" />

Upvotes: 1

Mike M.
Mike M.

Reputation: 39191

The error is telling you that you have no name attribute on the <fragment> element specifying its class.

NullPointerException: name == null

However, it looks like you mean to load the Fragment yourself, so you don't want a <fragment> element. Instead, you want a ViewGroup that will hold the Fragment after the dynamic FragmentTransaction. Change your <fragment> to a <FrameLayout>.

Upvotes: 2

Related Questions