" android.view.InflateException:二进制XM文件行"在改变活动时

时间:2018-05-12 19:09:05

标签: java android xml android-studio inflate-exception

我目前正在开发Android应用,并且在实现将用户从一个活动引导到另一个活动的代码时遇到问题。 Android Studio IDE在任何Java或XML代码中都不显示错误,但是当活动启动时我尝试切换活动"登录"程序将失败,日志将产生以下错误

> 05-12 18:42:57.687 32378-32378/com.cars.evd.dealership
> E/AndroidRuntime: FATAL EXCEPTION: main
>     Process: com.cars.evd.dealership, PID: 32378
>     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cars.evd.dealership/com.cars.evd.dealership.main.SignIn}:
> android.view.InflateException: Binary XML file line #53: Binary XML
> file line #53: Error inflating class info.hoang8f.widget.FButton
>         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
>         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
>         at android.app.ActivityThread.-wrap11(Unknown Source:0)
>         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
>         at android.os.Handler.dispatchMessage(Handler.java:106)
>         at android.os.Looper.loop(Looper.java:164)
>         at android.app.ActivityThread.main(ActivityThread.java:6494)
>         at java.lang.reflect.Method.invoke(Native Method)
>         at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
>         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
>      Caused by: android.view.InflateException: Binary XML file line #53: Binary XML file line #53: Error inflating class info.hoang8f.widget.FButton
>      Caused by: android.view.InflateException: Binary XML file line #53: Error inflating class info.hoang8f.widget.FButton
>      Caused by: java.lang.reflect.InvocationTargetException
>         at java.lang.reflect.Constructor.newInstance0(Native Method)
>         at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
>         at android.view.LayoutInflater.createView(LayoutInflater.java:647)
>         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
>         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
>         at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
>         at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
>         at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
>         at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
>         at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
>         at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287)
>         at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
>         at com.cars.evd.dealership.main.SignIn.onCreate(SignIn.java:25)
>         at android.app.Activity.performCreate(Activity.java:7009)
>         at android.app.Activity.performCreate(Activity.java:7000)
>         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
>         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
>         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
>         at android.app.ActivityThread.-wrap11(Unknown Source:0)
>         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
>         at android.os.Handler.dispatchMessage(Handler.java:106)
>         at android.os.Looper.loop(Looper.java:164)
>         at android.app.ActivityThread.main(ActivityThread.java:6494)
>         at java.lang.reflect.Method.invoke(Native Method)
>         at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
>         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
>      Caused by: java.lang.UnsupportedOperationException: Can't convert value at index 1 to color: type=0x5
>         at android.content.res.TypedArray.getColor(TypedArray.java:473)
>         at info.hoang8f.widget.FButton.parseAttrs(FButton.java:116)
>         at info.hoang8f.widget.FButton.<init>(FButton.java:52)
>         at java.lang.reflect.Constructor.newInstance0(Native Method) 
>         at java.lang.reflect.Constructor.newInstance(Constructor.java:334) 
>         at android.view.LayoutInflater.createView(LayoutInflater.java:647) 
>         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) 
>         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 
>         at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) 
>         at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 
>         at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
>         at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
>         at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
>         at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 
>         at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
>         at com.cars.evd.dealership.main.SignIn.onCreate(SignIn.java:25) 
>         at android.app.Activity.performCreate(Activity.java:7009) 
>         at android.app.Activity.performCreate(Activity.java:7000) 
>         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214) 
>         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731) 
>         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 
>         at android.app.ActivityThread.-wrap11(Unknown Source:0) 
>         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 
>         at android.os.Handler.dispatchMessage(Handler.java:106) 
>         at android.os.Looper.loop(Looper.java:164) 
>         at android.app.ActivityThread.main(ActivityThread.java:6494) 
>         at java.lang.reflect.Method.invoke(Native Method) 
>         at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
>         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

清单

  

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".SignIn">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
    </intent-filter>
</activity>
</application> 
</manifest>

MainActivity.Java

Button btnSignIn, btnSignUp;
TextView txtSlogan;

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

    btnSignIn = (Button) findViewById(R.id.btnSignIn);
    btnSignUp = (Button) findViewById(R.id.btnSignUp);

    txtSlogan = (TextView) findViewById(R.id.txtSlogan);
    Typeface face = Typeface.createFromAsset(getAssets(), "fonts/NABILA.TTF");
    txtSlogan.setTypeface(face);


    btnSignUp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent SignUp = new Intent(MainActivity.this, SignUp.class);
            startActivity(SignUp);
        }
    });

    btnSignIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent SignIn = new Intent(MainActivity.this, SignIn.class);
            startActivity(SignIn);
        }
    });

} }

activity_main.xml中

  

     

<LinearLayout
    android:orientation="vertical"
    android:layout_centerInParent="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/logo" />

    <TextView
        android:id="@+id/txtSlogan"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/slogan"
        android:textColor="@android:color/white" />
</LinearLayout>

<LinearLayout
    android:orientation="horizontal"
    android:layout_alignParentBottom="true"
    android:weightSum="2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <Button
        android:id="@+id/btnSignUp"
        style="@style/Widget.AppCompat.Button"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:layout_weight="1"
        android:background="@color/btnSignActive"
        android:text="@string/SignUp"
        android:textColor="@android:color/white"
       />

    <Button
        android:id="@+id/btnSignIn"
        style="@style/Widget.AppCompat.Button"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:layout_weight="1"
        android:background="@color/btnSignActive"
        android:text="@string/SignIn"
        android:textColor="@android:color/white"
       />
</LinearLayout>
     

SignIn.Java

public class SignIn extends AppCompatActivity {
EditText edtemail, edtPassword;
Button btnSignIn; 
@Override
protected void onCreate(Bundle saveInstanceState) {
    super.onCreate(saveInstanceState);
    setContentView(R.layout.activity_sign_in);

    edtPassword = (MaterialEditText) findViewById(R.id.edtPassword);
    edtemail = (MaterialEditText) findViewById(R.id.edtemail);
    btnSignIn = (Button) findViewById(R.id.btnSignIn);


    //Init Firebase
    final FirebaseDatabase database = FirebaseDatabase.getInstance();
    final DatabaseReference table_user = database.getReference("User");

    btnSignIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            final ProgressDialog mDialog = new ProgressDialog(SignIn.this);
            mDialog.setMessage("Please Wait...");
            mDialog.show();

            table_user.addValueEventListener(new ValueEventListener() {

                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    //check if user not exist in database
                    if(dataSnapshot.child(edtemail.getText().toString()).exists()) {
                        //get user information
                        mDialog.dismiss();
                        User user = dataSnapshot.child(edtemail.getText().toString()).getValue(User.class);
                        assert user != null;
                        user.setName(edtemail.getText().toString());
                        if (user.getPassword().equals(edtPassword.getText().toString())) {
                        } else {
                            Toast.makeText(SignIn.this, "Wrong Password !", Toast.LENGTH_SHORT).show();
                        }
                    }else{
                        Toast.makeText(SignIn.this, "User not exist in Database !", Toast.LENGTH_SHORT).show();
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }
    });

} }

SignIn.xml

  

<LinearLayout
    android:orientation="vertical"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:layout_centerInParent="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <com.rengwuxian.materialedittext.MaterialEditText
        android:id="@+id/edtemail"
        android:hint="@string/name_of_e_mail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColorHint="@android:color/white"
        android:text="@string/daniel25_gmail_com"
        android:textColor="@android:color/white"
        android:textSize="34sp"
        android:inputType="phone"
        app:met_baseColor="@android:color/white"
        app:met_floatingLabel="highlight"
        app:met_maxCharacters="11"
        app:met_primaryColor="@android:color/white"
        app:met_singleLineEllipsis="true"
        />

    <com.rengwuxian.materialedittext.MaterialEditText
        android:id="@+id/edtPassword"
        android:hint="@string/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColorHint="@android:color/white"
        android:text="@string/_1234"
        android:textColor="@android:color/white"
        android:textSize="34sp"
        android:inputType="textPassword"
        app:met_baseColor="@android:color/white"
        app:met_floatingLabel="highlight"
        app:met_maxCharacters="11"
        app:met_primaryColor="@android:color/white"
        app:met_singleLineEllipsis="true"
        />

</LinearLayout>
<info.hoang8f.widget.FButton
    android:id="@+id/btnSignIn"
    android:text="@string/SignIn"
    android:textColor="@android:color/white"
    android:layout_marginRight="8dp"
    android:layout_marginLeft="8dp"
    android:layout_alignParentBottom="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
    app:buttonColor="@color/btnSignActive"
    app:shadowColor="@android:color/black"
    app:shadowEnabled="true"
    app:shadowHeight="5dp"
    app:cornerRadius="4dp"
    /> </RelativeLayout>

我一直想弄清楚为什么错误出现但没有好处。

0 个答案:

没有答案