关于android布局:应用程序停止但没有错误

Application stops but there is no error

这是该错误的新记录,我不明白它的含义,我似乎无法弄清楚该错误

11-25 15:56:18.773 6776-6776 / com.example.ghost.prochat E / UncaughtException:java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.ghost.prochat / com.example。 ghost.prochat.MainActivity}:android.view.InflateException:二进制XML文件第2行:膨胀类错误
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2204)
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2254)
在android.app.ActivityThread.access $ 600(ActivityThread.java:141)
在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234)
在android.os.Handler.dispatchMessage(Handler.java:99)
在android.os.Looper.loop(Looper.java:137)
在android.app.ActivityThread.main(ActivityThread.java:5069)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
在dalvik.system.NativeStart.main(本机方法)
原因:android.view.InflateException:二进制XML文件第2行:膨胀类错误
在android.view.LayoutInflater.createView(LayoutInflater.java:613)
在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
在android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)
在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
在android.view.LayoutInflater.inflate(LayoutInflater.java:466)
在android.view.LayoutInflater.inflate(LayoutInflater.java:396)
在android.view.LayoutInflater.inflate(LayoutInflater.java:352)
在android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
在android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
在com.example.ghost.prochat.MainActivity.onCreate(MainActivity.java:56)
在android.app.Activity.performCreate(Activity.java:5104)
在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1092)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2254)吗?
在android.app.ActivityThread.access $ 600(ActivityThread.java:141)吗?
在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234)吗?
在android.os.Handler.dispatchMessage(Handler.java:99)吗?
在android.os.Looper.loop(Looper.java:137)吗?
在android.app.ActivityThread.main(ActivityThread.java:5069)吗?
在java.lang.reflect.Method.invokeNative(本机方法)?
在java.lang.reflect.Method.invoke(Method.java:511)吗?
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)吗?
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)吗?
在dalvik.system.NativeStart.main(Native Method)吗?
造成原因:java.lang.reflect.InvocationTargetException
在java.lang.reflect.Constructor.constructNative(本机方法)
在java.lang.reflect.Constructor.newInstance(Constructor.java:417)
在android.view.LayoutInflater.createView(LayoutInflater.java:587)
在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)吗?
在android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)吗?
在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)吗?
在android.view.LayoutInflater.inflate(LayoutInflater.java:466)吗?
在android.view.LayoutInflater.inflate(LayoutInflater.java:396)吗?
在android.view.LayoutInflater.inflate(LayoutInflater.java:352)吗?
在android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)吗?
在android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)吗?
在com.example.ghost.prochat.MainActivity.onCreate(MainActivity.java:56)吗?
在android.app.Activity.performCreate(Activity.java:5104)吗?
在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1092)吗?
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)吗?
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2254)吗?
在android.app.ActivityThread.access $ 600(ActivityThread.java:141)吗?
在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234)吗?
在android.os.Handler.dispatchMessage(Handler.java:99)吗?
在android.os.Looper.loop(Looper.java:137)吗?
在android.app.ActivityThread.main(ActivityThread.java:5069)吗?
在java.lang.reflect.Method.invokeNative(本机方法)?
在java.lang.reflect.Method.invoke(Method.java:511)吗?
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)吗?
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)吗?
在dalvik.system.NativeStart.main(Native Method)吗?
原因:java.lang.UnsupportedOperationException:无法转换为尺寸:type = 0x1
在android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:463)
在android.view.View。(View.java:3340)
在android.view.ViewGroup。(ViewGroup.java:431)
在android.widget.LinearLayout。(LinearLayout.java:176)
在android.widget.LinearLayout。(LinearLayout.java:172)
在java.lang.reflect.Constructor.constructNative(本机方法)?
在java.lang.reflect.Constructor.newInstance(Constructor.java:417)吗?
在android.view.LayoutInflater.createView(LayoutInflater.java:587)吗?
在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)吗?
在android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)吗?
在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)吗?
在android.view.LayoutInflater.inflate(LayoutInflater.java:466)吗?
在android.view.LayoutInflater.inflate(LayoutInflater.java:396)吗?
在android.view.LayoutInflater.inflate(LayoutInflater.java:352)吗?
在android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)吗?
在android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)吗?
在com.example.ghost.prochat.MainActivity.onCreate(MainActivity.java:56)吗?
在android.app.Activity.performCreate(Activity.java:5104)吗?
在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1092)吗?
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)吗?
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2254)吗?
在android.app.ActivityThread.access $ 600(ActivityThread.java:141)吗?
在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234)吗?
在android.os.Handler.dispatchMessage(Handler.java:99)吗?
在android.os.Looper.loop(Looper.java:137)吗?
在android.app.ActivityThread.main(ActivityThread.java:5069)吗?
在java.lang.reflect.Method.invokeNative(本机方法)?
在java.lang.reflect.Method.invoke(Method.java:511)吗?
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)吗?
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)吗?
在dalvik.system.NativeStart.main(Native Method)?

我的mainActivity如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    //defining view objects
    private EditText editTextEmail;
    private EditText displayUsername;
    private EditText editTextPassword;
    private Button buttonSignup;


    private TextView textViewSignin;

    private ProgressDialog progressDialog;


    //defining firebaseauth object
    private FirebaseAuth firebaseAuth;
    /**
     * ATTENTION: This was auto-generated to implement the App Indexing API.
     * See https://g.co/AppIndexing/AndroidStudio for more information.
     */
    private GoogleApiClient client;

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

        //initializing firebase auth object
        firebaseAuth = FirebaseAuth.getInstance();

        //if getCurrentUser does not returns null
        if (firebaseAuth.getCurrentUser() != null) {
            //that means user is already logged in
            //so close this activity
            finish();

            //and open profile activity
            startActivity(new Intent(getApplicationContext(), ProfileActivity.class));
        }

        //initializing views
        editTextEmail = (EditText) findViewById(R.id.editTextEmail);
        displayUsername = (EditText) findViewById(R.id.displayUsername);
        editTextPassword = (EditText) findViewById(R.id.editTextPassword);
        textViewSignin = (TextView) findViewById(R.id.textViewSignin);

        buttonSignup = (Button) findViewById(R.id.buttonSignup);

        progressDialog = new ProgressDialog(this);

        //attaching listener to button
        buttonSignup.setOnClickListener(this);
        textViewSignin.setOnClickListener(this);
        // ATTENTION: This was auto-generated to implement the App Indexing API.
        // See https://g.co/AppIndexing/AndroidStudio for more information.
        client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
    }

    private void registerUser() {


        //getting email and password from edit texts
        String email = editTextEmail.getText().toString().trim();
        String password = editTextPassword.getText().toString().trim();

        //checking if email and passwords are empty
        if (TextUtils.isEmpty(email)) {
            Toast.makeText(this,"Please enter email", Toast.LENGTH_LONG).show();
            return;
        }

        if (TextUtils.isEmpty(password)) {
            Toast.makeText(this,"Please enter password", Toast.LENGTH_LONG).show();
            return;
        }

        //if the email and password are not empty
        //displaying a progress dialog

        progressDialog.setMessage("Registering Please Wait...");
        progressDialog.show();


        //creating a new user
        firebaseAuth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        //checking if success
                        if (task.isSuccessful()) {
                            finish();
                            final FirebaseUser user = task.getResult().getUser();
                            UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
                                    .setDisplayName(String.valueOf(displayUsername))
                                    .setPhotoUri(Uri.parse("https://example.com/jane-q-user/profile.png"))
                                    .build();
                            user.updateProfile(profileUpdates);

                            FirebaseDatabase.getInstance().getReference("users").child(user.getUid()).setValue(UserList.user);
                            startActivity(new Intent(getApplicationContext(), ProfileActivity.class));
                        } else {
                            //display some message here
                            Toast.makeText(MainActivity.this,"Registration Error", Toast.LENGTH_LONG).show();
                        }
                        progressDialog.dismiss();
                    }
                });

    }


    @Override
    public void onClick(View view) {

        if (view == buttonSignup) {
            registerUser();
        }

        if (view == textViewSignin) {
            //open login activity when user taps on the already registered textview
            startActivity(new Intent(this, LoginActivity.class));
        }

    }

    /**
     * ATTENTION: This was auto-generated to implement the App Indexing API.
     * See https://g.co/AppIndexing/AndroidStudio for more information.
     */
    public Action getIndexApiAction() {
        Thing object = new Thing.Builder()
                .setName("Main Page") // TODO: Define a title for the content shown.
                // TODO: Make sure this auto-generated URL is correct.
                .setUrl(Uri.parse("http://[ENTER-YOUR-URL-HERE]"))
                .build();
        return new Action.Builder(Action.TYPE_VIEW)
                .setObject(object)
                .setActionStatus(Action.STATUS_TYPE_COMPLETED)
                .build();
    }

    @Override
    public void onStart() {
        super.onStart();

        // ATTENTION: This was auto-generated to implement the App Indexing API.
        // See https://g.co/AppIndexing/AndroidStudio for more information.
        client.connect();
        AppIndex.AppIndexApi.start(client, getIndexApiAction());
    }

    @Override
    public void onStop() {
        super.onStop();

        // ATTENTION: This was auto-generated to implement the App Indexing API.
        // See https://g.co/AppIndexing/AndroidStudio for more information.
        AppIndex.AppIndexApi.end(client, getIndexApiAction());
        client.disconnect();
    }
}

我的main.activity在这里,我看不到任何错误

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/head"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.ghost.prochat.MainActivity">




        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="User Registration"
            android:id="@+id/textView"
            android:layout_gravity="center_horizontal" />

        <EditText
            android:id="@+id/displayUsername"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:hint="Username"
            android:inputType="textEmailAddress" />

        <EditText
            android:id="@+id/editTextEmail"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:hint="Enter email"
            android:inputType="textEmailAddress" />

        <EditText
            android:id="@+id/editTextPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:hint="Enter password"
            android:inputType="textPassword" />

        <Button
            android:id="@+id/buttonSignup"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:text="Signup" />

        <TextView
            android:text="Already Registered? Signin Here"
            android:id="@+id/textViewSignin"
            android:textAlignment="center"
            android:layout_margin="15dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />



</RelativeLayout>


您的崩溃是由以下原因引起的:

Caused by: java.lang.UnsupportedOperationException: Can't convert to
dimension: type=0x1 at
android.content.res.TypedArray.getDimensionPixelSize

所以问题出在您的维度之一:

1
2
3
4
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"

我可以猜到您使用了错误的尺寸类型,例如sp代替dp

以下是正确尺寸的外观:

1
<dimen name="activity_vertical_margin">36dp</dimen>

还请确保在此答案中提到的values文件夹中的xml中定义了维度