Question

In my PreferenceActivity I have :

public class SettingsActivity extends PreferenceActivity implements
    SharedPreferences.OnSharedPreferenceChangeListener {
SharedPreferences sp;
private final String TAG = getClass().getSimpleName();
private SimpleFacebook mSimpleFacebook;
ProgressDialog  progressBar;
Context ctx;
RelativeLayout connection;
SlidingUpPanelLayout slider;


protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    ctx = this;
    addPreferencesFromResource(R.xml.preferences);
    Preference button = (Preference)findPreference("logoutButton");

    Context context = getBaseContext();
    LayoutInflater lif = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    connection = (RelativeLayout) lif.inflate(R.id.conexion, null);

    }
}

I need to inflate reference of the layout,so that i can disappear an element. When I choose to inflate whole layout ( R.layout.activity_main), I get the error :

android.view.InflateException: Binary XML file line #12: Error inflating class fragment

( In the activity_main, I have a fragment to show a map )

When I try to inflate just one component of the layout ( connection ), I get the error :

 android.content.res.Resources$NotFoundException: Resource ID #0x7f060007 type #0x12 is not valid

How should I do???

EDIT : Case 1 :

RelativeLayout layout = (RelativeLayout)lif.inflate(R.layout.activity_main, null);

Log -->

11-18 14:26:06.417: E/AndroidRuntime(28342): FATAL EXCEPTION: main
11-18 14:26:06.417: E/AndroidRuntime(28342): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xoco.checker/com.xoco.checker.pref.SettingsActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class fragment
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2146)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.app.ActivityThread.access$700(ActivityThread.java:140)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.os.Looper.loop(Looper.java:137)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.app.ActivityThread.main(ActivityThread.java:4944)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at java.lang.reflect.Method.invokeNative(Native Method)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at java.lang.reflect.Method.invoke(Method.java:511)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at dalvik.system.NativeStart.main(Native Method)
11-18 14:26:06.417: E/AndroidRuntime(28342): Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class fragment
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at com.xoco.checker.pref.SettingsActivity.onCreate(SettingsActivity.java:55)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.app.Activity.performCreate(Activity.java:5188)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2085)
11-18 14:26:06.417: E/AndroidRuntime(28342):    ... 11 more
11-18 14:26:06.417: E/AndroidRuntime(28342): Caused by: java.lang.ClassNotFoundException: android.view.fragment
11-18 14:26:06.417: E/AndroidRuntime(28342):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.view.LayoutInflater.createView(LayoutInflater.java:558)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:649)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:666)
11-18 14:26:06.417: E/AndroidRuntime(28342):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691)
11-18 14:26:06.417: E/AndroidRuntime(28342):    ... 20 more

Case 2 :
Context context = getBaseContext(); LayoutInflater lif = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

connection = (RelativeLayout) lif.inflate(R.id.conexion, null);

Log :

11-18 14:31:13.587: E/AndroidRuntime(29144): FATAL EXCEPTION: main
11-18 14:31:13.587: E/AndroidRuntime(29144): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xoco.checker/com.xoco.checker.pref.SettingsActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f060007 type #0x12 is not valid
11-18 14:31:13.587: E/AndroidRuntime(29144):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2146)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at android.app.ActivityThread.access$700(ActivityThread.java:140)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at android.os.Looper.loop(Looper.java:137)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at android.app.ActivityThread.main(ActivityThread.java:4944)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at java.lang.reflect.Method.invokeNative(Native Method)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at java.lang.reflect.Method.invoke(Method.java:511)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at dalvik.system.NativeStart.main(Native Method)
11-18 14:31:13.587: E/AndroidRuntime(29144): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f060007 type #0x12 is not valid
11-18 14:31:13.587: E/AndroidRuntime(29144):    at android.content.res.Resources.loadXmlResourceParser(Resources.java:2450)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at android.content.res.Resources.getLayout(Resources.java:1178)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at android.view.LayoutInflater.inflate(LayoutInflater.java:395)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at com.xoco.checker.pref.SettingsActivity.onCreate(SettingsActivity.java:57)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at android.app.Activity.performCreate(Activity.java:5188)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
11-18 14:31:13.587: E/AndroidRuntime(29144):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2085)
11-18 14:31:13.587: E/AndroidRuntime(29144):    ... 11 more

I empty ([...]) several layout of the activity_main for cleaner source.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MapActivity" >

<com.sothree.slidinguppanel.SlidingUpPanelLayout
    android:id="@+id/sliding_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment" />

    <RelativeLayout
        android:id="@+id/reviewsPanel"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:visibility="gone" >

        <!-- l1 is the header, it doesn't move-->

        <RelativeLayout
            android:id="@+id/l1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            [...]    
        </RelativeLayout>
        <!-- end l1 -->

        <RelativeLayout
            android:id="@+id/headerComment"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/l1" >

        [...] 

        </RelativeLayout>

        <ListView
            android:id="@+id/reviews"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_below="@id/headerComment"
            android:padding="@dimen/activity_horizontal_margin" />
    </RelativeLayout>
</com.sothree.slidinguppanel.SlidingUpPanelLayout>
<!-- Appear when no internet connection -->

<Button
    android:id="@+id/bNoConnection"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_gravity="center_vertical|center_horizontal"
    android:text="No hay conexion internet. ¿Reintentar?"
    android:visibility="gone" />
<!-- User connection layout -->

<RelativeLayout
    android:id="@+id/conexion"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="@dimen/activity_vertical_margin"
    android:layout_marginLeft="@dimen/activity_horizontal_margin"
    android:layout_marginRight="@dimen/activity_horizontal_margin"
    android:layout_marginTop="@dimen/activity_vertical_margin"
    android:visibility="gone" >

    <!-- Login to facebook -->

    <Button
        android:id="@+id/button_facebook_login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="@drawable/active_404" />

</RelativeLayout>

Was it helpful?

Solution

I need to inflate reference of the layout,so that i can disappear an element.

You can't hide an element in your main activity this way. Your settings activity should change the setting, that's it. It's up to the main activity to handle its own views. In onResume() you can check the setting and hide it if appropriate.

OTHER TIPS

Well, first of all, your layout and the error java.lang.ClassNotFoundException: android.view.fragment indicates that your activity has to extend from FragmentActivity, otherwise you can not inflate from layout with <fragment>

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top