Почему это приложение вылетает с ошибкой во время выполнения? - PullRequest
0 голосов
/ 26 августа 2018

У меня есть проект Android, который в основном представляет собой приложение-шаблон от студии Android.Вот activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <Button
        android:id="@+id/gameStartButton"
        android:text="Start"
        android:fontFamily="serif"
        android:textSize="30sp"
        android:textColor="@color/colorAccent"
        android:background="@color/colorPrimaryDark"
        android:layout_width="match_parent"
        android:layout_margin="10dp"
        android:layout_height="@string/mainMenuItemWidth"/>
</android.support.constraint.ConstraintLayout>

, а вот MainActivity.java: package com.example.saga.test;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

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

Когда я запускаю это приложение, оно падает сэта трассировка:

08-26 17:57:36.256 5868-5868/com.example.saga.test E/AndroidRuntime: FATAL EXCEPTION: main
                                                                     Process: com.example.saga.test, PID: 5868
                                                                     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.saga.test/com.example.saga.test.MainActivity}: java.lang.RuntimeException: Binary XML file line #0: You must supply a layout_height attribute.
                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2534)

Как вы видите, я на самом деле предоставил атрибут layout_height и для макета ограничения, и для кнопки, почему тогда я получаю эту ошибку?

Ответы [ 3 ]

0 голосов
/ 26 августа 2018

Основная причина: Вы используете строку для свойства android:layout_height. Ожидаемое значение integer или dimen.

Решение: Создайте новый файл в папке res/values с именем dimens.xml и добавьте в него следующий раздел.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="mainMenuItemWidth">20dp</dimen>
</resources>

Тогда в вашем XML-файле.

<Button
        android:id="@+id/gameStartButton"
        android:text="Start"
        android:fontFamily="serif"
        android:textSize="30sp"
        android:textColor="@color/colorAccent"
        android:background="@color/colorPrimaryDark"
        android:layout_width="match_parent"
        android:layout_margin="10dp"
        android:layout_height="@dimen/mainMenuItemWidth"/>
0 голосов
/ 25 июня 2019

Приложение не работает по причине android:layout_height="@string/mainMenuItemWidth", потому что layout_height не может принимать значение типа строки.

создать значение в dimen файле с именем mainMenuItemWidth

Измените android:layout_height="@string/mainMenuItemWidth" на android:layout_height="@dimen/mainMenuItemWidth"

Я надеюсь, что это сработает для вас.

0 голосов
/ 26 августа 2018

Вы не можете использовать строковое значение для layout_height.Поместите значение в dimensions.xml и укажите это значение, используя

android:layout_height="@dimen/mainMenuItemWidth"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...