NewLearner
NewLearner

Reputation: 116

Issue in using fragments

Hi i have a xml layout which I have included as a fragment in every layout.

Here is my xml in maincategories.xml

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

 <LinearLayout
        android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:orientation="horizontal">
    <ImageButton
        android:id="@+id/mainbutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/logo"
        android:src="@drawable/logo" />
        </LinearLayout>
 <View
    android:id="@+id/viewLine"
    android:layout_width="fill_parent"
    android:layout_height="1dp"
    android:layout_below="@id/txtUserName"
    android:background="#cccccc" />
<ListView
    android:id="@+id/list1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="1dp"
    android:divider="#b5b5b5"
    android:dividerHeight="1dp"
    android:fastScrollEnabled="true"
    android:listSelector="@drawable/list_selector"
    android:smoothScrollbar="true" />
    <fragment 
     android:name="com.rag.xmlparsing.fragmentactivity"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
      />

 </LinearLayout>

the java code for the above xml is

public class Listofcategories extends Activity {

            public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.maincategories);
            // some code for list activity
         }

And fragmentactivity class is

public class fragmentactivity extends FragmentActivity {
RadioButton radioButton;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
          Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.actnavbar,
            container, false);


        radioButton = (RadioButton) view.findViewById(R.id.home);
        radioButton.setOnCheckedChangeListener(btnNavBarOnCheckedChangeListener);
        radioButton = (RadioButton) view.findViewById(R.id.aboutus);
        radioButton.setOnCheckedChangeListener(btnNavBarOnCheckedChangeListener);
        radioButton = (RadioButton) view.findViewById(R.id.contactus);
        radioButton.setOnCheckedChangeListener(btnNavBarOnCheckedChangeListener);
        radioButton = (RadioButton) view.findViewById(R.id.orderhistory);
        radioButton.setOnCheckedChangeListener(btnNavBarOnCheckedChangeListener);
        return view;
}
 private CompoundButton.OnCheckedChangeListener btnNavBarOnCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
           int sid=buttonView.getId();
           int hme=R.id.home;
           int abtus=R.id.aboutus;
           int cnt=R.id.contactus;
           int ordr=R.id.orderhistory;
            if (isChecked) {
                if(sid==hme)
                {
                    //some function
                                 }



                else if(sid==abtus)
                {
                    //some function
                }
                else if(sid==cnt)
                {
                              //
                }
                else if(sid==ordr)
                {

                }

            }
        }
    };


}

and my actnavbar.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="60dp"

android:background="@android:color/white"
>
  <RadioGroup
    android:id="@+id/radiogroup"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal"
     android:padding="5dp"
    android:background="#cccccc"       
    >

    <RadioButton
        android:id="@+id/home"
        style="@style/navbar_button"
        android:drawableTop="@drawable/home_icon"
        android:text="Home"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
       android:gravity="center_horizontal"

       android:textSize="12sp"
       android:textColor="#333333"
        />

    <RadioButton
        android:id="@+id/aboutus"
        style="@style/navbar_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="About us"
        android:textSize="12sp"
       android:textColor="#333333"
        android:drawableTop="@drawable/aboutus_icon"
        android:gravity="center_horizontal" />

         <RadioButton
           android:id="@+id/contactus"
        style="@style/navbar_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="12sp"
        android:text="Contact us"
       android:textColor="#333333"
        android:drawableTop="@drawable/contact_icon"
        android:gravity="center_horizontal" />

    <RadioButton
        android:id="@+id/orderhistory"
        style="@style/navbar_button"
        android:drawableTop="@drawable/order_history_icon"
        android:text="Order history"
        android:textSize="12sp"
       android:textColor="#333333"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
       android:gravity="center_horizontal"

            />


       </RadioGroup>



</RelativeLayout>

If i use like this I am getting the following logcat error

    09-21 14:52:12.466: E/AndroidRuntime(336): FATAL EXCEPTION: main
  09-21 14:52:12.466: E/AndroidRuntime(336): java.lang.RuntimeException: Unable to        
 start activity    

 ComponentInfo{com.androidhive.xmlparsing/com.androidhive.xmlparsing.Listofcategories}:  android.view.InflateException: Binary XML file line #44: Error inflating class fragment
  09-21 14:52:12.466: E/AndroidRuntime(336):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
       09-21 14:52:12.466: E/AndroidRuntime(336):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
      09-21 14:52:12.466: E/AndroidRuntime(336):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
       09-21 14:52:12.466: E/AndroidRuntime(336):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
        09-21 14:52:12.466: E/AndroidRuntime(336):  at android.os.Handler.dispatchMessage(Handler.java:99)
 09-21 14:52:12.466: E/AndroidRuntime(336):     at android.os.Looper.loop(Looper.java:123)
 09-21 14:52:12.466: E/AndroidRuntime(336):     at android.app.ActivityThread.main(ActivityThread.java:3683)
 09-21 14:52:12.466: E/AndroidRuntime(336):     at java.lang.reflect.Method.invokeNative(Native Method)
 09-21 14:52:12.466: E/AndroidRuntime(336):     at java.lang.reflect.Method.invoke(Method.java:507)
   09-21 14:52:12.466: E/AndroidRuntime(336):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
 09-21 14:52:12.466: E/AndroidRuntime(336):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
 09-21 14:52:12.466: E/AndroidRuntime(336):     at dalvik.system.NativeStart.main(Native Method)
 09-21 14:52:12.466: E/AndroidRuntime(336): Caused by: android.view.InflateException: Binary XML file line #44: Error inflating class fragment
 09-21 14:52:12.466: E/AndroidRuntime(336):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
 09-21 14:52:12.466: E/AndroidRuntime(336):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
 09-21 14:52:12.466: E/AndroidRuntime(336):     at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
 09-21 14:52:12.466: E/AndroidRuntime(336):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
09-21 14:52:12.466: E/AndroidRuntime(336):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
 09-21 14:52:12.466: E/AndroidRuntime(336):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
 09-21 14:52:12.466: E/AndroidRuntime(336):     at android.app.Activity.setContentView(Activity.java:1657)
  09-21 14:52:12.466: E/AndroidRuntime(336):    at com.androidhive.xmlparsing.Listofcategories.onCreate(Listofcategories.java:97)
    09-21 14:52:12.466: E/AndroidRuntime(336):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
  09-21 14:52:12.466: E/AndroidRuntime(336):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
   09-21 14:52:12.466: E/AndroidRuntime(336):   ... 11 more
 09-21 14:52:12.466: E/AndroidRuntime(336): Caused by: java.lang.ClassNotFoundException: android.view.fragment in loader dalvik.system.PathClassLoader[/data/app/com.androidhive.xmlparsing-1.apk]
  09-21 14:52:12.466: E/AndroidRuntime(336):    at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
       09-21 14:52:12.466: E/AndroidRuntime(336):   at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
       09-21 14:52:12.466: E/AndroidRuntime(336):   at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
           09-21 14:52:12.466: E/AndroidRuntime(336):   at android.view.LayoutInflater.createView(LayoutInflater.java:471)
  09-21 14:52:12.466: E/AndroidRuntime(336):    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:549)
     09-21 14:52:12.466: E/AndroidRuntime(336):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
     09-21 14:52:12.466: E/AndroidRuntime(336):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
    09-21 14:52:12.466: E/AndroidRuntime(336):  ... 20 more

Where am i doing the mistake??? Please any suggestions..

Upvotes: 0

Views: 768

Answers (1)

Niranj Patel
Niranj Patel

Reputation: 33238

First of all, your class **fragmentactivity** is FragmentActivity you can't use it in xml file.

Your code..

public class fragmentactivity extends FragmentActivity

View class code

public class fragmentactivity extends Fragment

Only view class file can use in xml file

that why you facing java.lang.ClassNotFoundException: android.view.fragment error

here many example on Fragment

Example 1

Example 2

Also look on this question

Upvotes: 1

Related Questions