Ошибка надувания класса Button Android studio - PullRequest
0 голосов
/ 25 апреля 2020

Я работаю над приложением в Android Studio, и после добавления кнопок в MainActivity для перехода к другим действиям, несмотря на то, что макет правильно отображается в редакторе, я получаю сообщение об ошибке, которое будет опубликовано на конец. В моем проекте есть другие действия, которые я не включил, потому что ошибка относится к Activity_main. xml, но я включу их, если они необходимы для решения проблемы.

Вот поле Activity_main. xml:

<?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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<ImageView
    android:id="@+id/view_img_main_menu"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:src="@drawable/grocery_img_1" />

<Button
    android:id="@+id/btn_inventory"
    android:layout_width="match_parent"
    android:layout_height="65dp"
    android:layout_below="@id/view_img_main_menu"
    android:text="@string/btn_my_groceries_text"
    android:theme="@style/BtnTheme" />

<Button
    android:id="@+id/btn_shopping_list"
    android:layout_width="match_parent"
    android:layout_height="65dp"
    android:layout_below="@id/btn_inventory"
    android:text="@string/btn_shopping_list_text"
    android:theme="@style/BtnTheme" />

</RelativeLayout>

Вот MainActivity:

public class MainActivity extends AppCompatActivity {

private Button btnInventory;
private Button btnShopList;

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

    btnInventory = findViewById(R.id.btn_inventory);
    btnShopList = findViewById(R.id.btn_shopping_list);

    btnInventory.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent inventoryIntent = new Intent(MainActivity.this, Inventory.class);
            startActivity(inventoryIntent);
        }
    });

    btnShopList.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent shopListIntent = new Intent(MainActivity.this, ShoppingList.class);
            startActivity(shopListIntent);
        }
    });
}

Вот ошибка, которую я получаю, когда пытаюсь запустить код:

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.grocerystatusapplication/com.example.grocerystatusapplication.MainActivity}: android.view.InflateException: Binary XML file line #15 in com.example.grocerystatusapplication:layout/activity_main: Binary XML file line #15 in com.example.grocerystatusapplication:layout/activity_main: Error inflating class Button
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3344)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3488)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2049)
    at android.os.Handler.dispatchMessage(Han
E/AndroidRuntime:     at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2049)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:216)
    at android.app.ActivityThread.main(ActivityThread.java:7506)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:956)

Вот стили. xml:

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowBackground">@color/colorLayoutBackground</item>
</style>

<style name="BtnTheme" parent="TextAppearance.AppCompat.Widget.Button.Colored">
    <item name="colorButtonNormal">@color/colorViewBackground</item>
</style>

<style name="TextViewTheme" parent="">
    <item name="android:background">@drawable/rounded_corners</item>
    <item name="android:textColor">@android:color/white</item>
</style>

Я попытался изменить атрибуты кнопки, к которой относится ошибка (строка 15, btn_inventory), но я никуда не попал. Не сталкивался с этой ошибкой раньше и не очень понял в чем проблема. Что я могу изменить, чтобы это работало? Просматривая сообщения об этой ошибке, я не получил ответа на свой вопрос, и, похоже, было немало причин, по которым эта ошибка возникла.

1 Ответ

1 голос
/ 25 апреля 2020

В обоих тегах кнопок измените

android:theme="@style/BtnTheme" 

на

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