Pankaj Darji
Pankaj Darji

Reputation: 146

Material Design EditText in Fragments

style.xml

<resources>

    <!-- Application theme. -->
    <style name="generalnotitle" parent="Theme.AppCompat.Light">
        <item name="android:windowNoTitle">true</item>

    </style>


    <!-- for volley dailog theme -->
    <style name="DialogTheme" parent="@android:style/Theme.Dialog">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowNoTitle">true</item>
    </style>

</resources>

My Gradle File :

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.ewh.calculations"
        minSdkVersion 11
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v4:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile project(':swipelistview')
    compile 'com.github.sd6352051.niftydialogeffects:niftydialogeffects:1.0.0'
}

My XML :

<android.support.design.widget.TextInputLayout
                android:id="@+id/tl_firstName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:errorEnabled="true">

                <android.support.v7.widget.AppCompatEditText
                    android:id="@+id/editText_firstName"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="First Name"
                    android:inputType="textPersonName"
                    android:singleLine="true"
                    android:text="dfdsf"
                    android:textColor="#000000"
                    android:textColorHint="#000000" />

            </android.support.design.widget.TextInputLayout>

I am trying to use Material design Edittext in Fragment.I have extends AppCompatActivity to my Activity in which fragments are loaded but it give me Error Like Below..

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ewh.calculations/com.ewh.calculations.ActivityOperation}: android.view.InflateException: Binary XML file line #15: Error inflating class <unknown>
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
                at android.app.ActivityThread.access$800(ActivityThread.java:151)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
                at android.os.Handler.dispatchMessage(Handler.java:102)
                at android.os.Looper.loop(Looper.java:135)
                at android.app.ActivityThread.main(ActivityThread.java:5254)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.IllegalArgumentException: You need to use a Theme.AppCompat theme (or descendant) with the design library.
            at android.support.design.widget.ThemeUtils.checkAppCompatTheme(ThemeUtils.java:34)
            at android.support.design.widget.TextInputLayout.<init>(TextInputLayout.java:103)
            at android.support.design.widget.TextInputLayout.<init>(TextInputLayout.java:96)
            at java.lang.reflect.Constructor.newInstance(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
            at android.view.LayoutInflater.createView(LayoutInflater.java:607)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at fragments.FragmentNip.onCreate(FragmentNip.java:111)
            at android.support.v4.app.Fragment.performCreate(Fragment.java:1939)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1029)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613)
            at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330)
            at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547)
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236)
            at android.app.Activity.performStart(Activity.java:6006)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)

My Application theme is android:theme="@style/Theme.AppCompat.Light" Please Help me Thanks in Advance.

Upvotes: 0

Views: 963

Answers (3)

Pankaj Darji
Pankaj Darji

Reputation: 146

Hi guys i find the Solution i just Replace the Line

fragmentView =LayoutInflater.from(getActivity().getApplicationContext()).inflate(R.layout.fragment_lwnr, null);

With

fragmentView = getActivity().getLayoutInflater().inflate(R.layout.fragment_lwnr, null);

And now Material Design EditText Working fine in Fragments.

Upvotes: 2

KishuDroid
KishuDroid

Reputation: 5451

Material Design EditText:

<android.support.design.widget.TextInputLayout
            android:id="@+id/passwordwrapper"
            android:layout_width="match_parent"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:layout_height="wrap_content">

            <EditText
                android:id="@+id/etpassword"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textPassword"
                android:hint="@string/login_password"/>

        </android.support.design.widget.TextInputLayout>

Add below lines in your style.xml file:

<style name="MyMaterialTheme" parent="MyMaterialTheme.Base">

    </style>

    <style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="MyMaterialTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

    <style name="MyMaterialTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

And set theme to your Manifest's Application Tag:

android:theme="@style/MyMaterialTheme"

Hope it will help you.

Upvotes: 0

RobinHood
RobinHood

Reputation: 10969

Caused by: java.lang.IllegalArgumentException: You need to use a Theme.AppCompat theme (or descendant) with the design library.

It means that same Activity is not using Theme.AppCompat theme.

Upvotes: 0

Related Questions