Android-приложение не может запустить активность ComponentInfo после запуска на Android Studio (kotlin) - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь запустить приложение на своем телефоне с помощью функции «Запустить приложение» в Android Studio.Приложение вылетает при запуске и отказывается работать.

Мне удалось запустить приложение на моем телефоне один раз, но это было намного раньше, чем когда эта проблема существовала.Это произошло, вероятно, при попытке исправить ошибку компиляции, которая действительно исправила ее, но привела к другой проблеме.Никакой другой вопрос не помог мне, поскольку ни один из них не использовал kotlin, и я не мог точно определить, какую именно ошибку я мог совершить.

Вот logcat .(текст превышал ограничение в 30000 символов)

My AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools" package="com.example.testapp">

    <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true" tools:ignore="GoogleAppIndexingWarning,android:appComponentFactory"
            android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

И MainActivity.kt:

package com.example.testapp

import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.bottomnavigation.BottomNavigationView

class MainActivity : AppCompatActivity() {

    private lateinit var textMessage: TextView
    private val onNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
        when (item.itemId) {
            R.id.navigation_home -> {
                textMessage.setText(R.string.title_home)
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_dashboard -> {
                textMessage.setText(R.string.title_dashboard)
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_notifications -> {
                textMessage.setText(R.string.title_notifications)
                return@OnNavigationItemSelectedListener true
            }
        }
        false
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val navView: BottomNavigationView = findViewById(R.id.nav_view)

        textMessage = findViewById(R.id.message)
        navView.setOnNavigationItemSelectedListener(onNavigationItemSelectedListener)
    }}
}

Наконец, activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

    <TextView
            android:id="@+id/message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="152dp"
            android:layout_marginTop="22dp"
            android:text="TextView"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent"/>

    <android.support.design.widget.BottomNavigationView
            android:id="@+id/nav_view"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="#585858"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:menu="@menu/bottom_nav_menu" app:layout_constraintEnd_toEndOf="parent"
    />
    <ImageView
            android:layout_width="208dp"
            android:layout_height="184dp" app:srcCompat="@mipmap/image1"
            android:id="@+id/imageView" android:layout_marginTop="112dp"
            app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent"
            android:layout_marginStart="8dp" android:contentDescription="Image 1"/>
    <Button
            android:text="Button"
            android:layout_width="150dp"
            android:layout_height="48dp"
            android:id="@+id/button"
            app:layout_constraintTop_toBottomOf="@+id/imageView"
            app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="36dp"/>
    <ImageView
            android:layout_width="151dp"
            android:layout_height="153dp" app:srcCompat="@mipmap/image2"
            android:id="@+id/imageView2"
            android:layout_marginTop="128dp"
            app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginEnd="16dp"/>
    <Button
            android:text="Button1"
            android:layout_width="150dp"
            android:layout_height="48dp"
            android:id="@+id/button2"
            app:layout_constraintTop_toTopOf="@+id/button" app:layout_constraintEnd_toEndOf="parent"
            android:layout_marginEnd="16dp"/>

</androidx.constraintlayout.widget.ConstraintLayout>

Если понадобится больше кода, я поделюсь им.

Обычно, как и в моей первой попытке, когда я начинал разработку, приложение работало нормально,и не разбился бы.Теперь приложение сразу после запуска вылетает, независимо от того, работает оно на Android Studio или устанавливает apk на целевое устройство.

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

в вашем onNavigationItemSelectedListener вы не инициировали TextView textMessage.

navView.setOnNavigationItemSelectedListener{ item->
when (item.itemId) {
            R.id.navigation_home -> {
                textMessage.setText(R.string.title_home)
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_dashboard -> {
                textMessage.setText(R.string.title_dashboard)
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_notifications -> {
                textMessage.setText(R.string.title_notifications)
                return@OnNavigationItemSelectedListener true
            }
        }
        false
}
0 голосов
/ 17 мая 2019

Включите поддержку мультидекса в вашем файле app/build.gradle.

android {
    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}

dependencies {
  compile 'com.android.support:multidex:1.0.3'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...