单击导航到 main.activity 的按钮后,目标活动不会启动

问题描述 投票:0回答:1

在我的第一个 Android 应用程序中,我为此活动创建了 NoteActivity(不是 MainActivity)和片段、数据库、视图模型、导航等。

问题是,当我在单击应该打开 NoteActivity 的按钮后使用模拟器打开应用程序时,它会导航到 MainActivity。

我认为 AndroidManifest 或 build.gradle 实现中可能存在一些问题。

AndroidManifest(DzennikPodrozy 中提到了 NoteActivity):

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

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.LOCATION_HARDWARE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    <uses-feature
        android:name="android.hardware.camera"
        android:required="true" />

    <application
        android:allowBackup="true"
        android:requestLegacyExternalStorage="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.DuoTravel_v14"
        tools:targetApi="31">

        <activity
            android:name=".DzennikPodrozy"
            android:exported="true" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="andorid.intent.category.BROWSABLE" />
            </intent-filter>
        </activity>

        <activity
            android:name=".MapyActivity"
            android:exported="false"
            android:label="@string/title_activity_mapy"
            android:theme="@style/Theme.DuoTravel_v14" />

        <activity
            android:name=".StronaGlowna"
            android:exported="false" />

        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="*************************************" />
    </application>

    <queries>
        <intent>
            <action android:name="android.intent.action.MANAGE_EXTERNAL_STORAGE" />
        </intent>
    </queries>

</manifest>

Build.gradle(模块)

plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
    id("org.jetbrains.kotlin.kapt")
    id("kotlin-parcelize")                                  
    id("kotlin-kapt")                                       
                                                           
}

android {
    namespace = "pl.duotravel.duotravel_v14"
    compileSdk = 34

    defaultConfig {
        applicationId = "pl.duotravel.duotravel_v14"
        minSdk = 28
        targetSdk = 34
        versionCode = 1
        versionName = "1.0"
        kapt {
            correctErrorTypes = true
        }

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"

    }
    buildFeatures{                           
        viewBinding = true
    }
}


dependencies {

    implementation ("pub.devrel:easypermissions:3.0.0")  

    implementation("androidx.fragment:fragment-ktx:1.6.2")          
    implementation("androidx.core:core-ktx:1.9.0")
    implementation("androidx.appcompat:appcompat:1.6.1")
    implementation("com.google.android.material:material:1.10.0")
    implementation("androidx.constraintlayout:constraintlayout:2.1.4")
    implementation("com.google.android.gms:play-services-maps:18.2.0")
    implementation("androidx.navigation:navigation-fragment-ktx:2.7.5")
    implementation("androidx.navigation:navigation-ui-ktx:2.7.5") 
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.5")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")

   


    // Architectural Components
    implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2")
    implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2")
    implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.2")

    // Room
    implementation("androidx.room:room-runtime:2.6.0")

    implementation("androidx.room:room-ktx:2.6.0")


    // Navigation Components
    implementation("androidx.navigation:navigation-fragment-ktx:2.7.5")
    implementation("androidx.navigation:navigation-ui-ktx:2.7.5")
    implementation("androidx.navigation:navigation-dynamic-features-fragment:2.7.5")

}

Build.gradle(项目)

import com.android.build.gradle.internal.dsl.decorator.SupportedPropertyType.Collection.List.type

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
    id("com.android.application") version "8.1.3" apply false
    id("org.jetbrains.kotlin.android") version "1.9.0" apply false
}

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath ("com.android.tools.build:gradle:7.5.1")
        classpath ("org.jetbrains.kotlin:kotlin-gradle-plugin")
        classpath ("androidx.navigation:navigation-safe-args-gradle-plugin:2.5.0")

    }
}

对于一个很长的团队来说,我一直在 NoteActivity 代码中搜索问题,但它似乎已经完成。

如果您需要项目中的更多代码来帮助我,这不是问题

谢谢大家!

kotlin android-room dao implementation
1个回答
0
投票

mainfest(App 包含的内容)决定了 App 的组成部分,包括首次启动的 Activity。

具有 action

.MAIN
的活动是已启动的活动。默认情况下,当您创建项目时,它将是 MainActivity。

即你有

    <activity
        android:name=".MainActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
  • 这就是说,MainActivityMAIN 活动,因此是首先启动的活动。

要使 DzennikPodrozy 成为启动的活动,然后将 action 从 MainActivity 移动到 DzennikPodrozy 活动。

一个简化的最小示例。采取的步骤:-

  • 创建了新的空项目,然后
  • 添加一个新的空活动 DzennikPodrozy,然后
  • 每个的布局都发生了变化,因此文本视图(唯一的视图)显示活动名称,而对于 DzennikPodrozy 活动,TextView 的背景设置为青色。

所以清单包括:-

    <activity
        android:name=".DzennikPodrozy"
        android:exported="true" />
    <activity
        android:name=".MainActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

当应用程序运行时,MainActivity 启动:-

将清单更改为:-

    <activity
        android:name=".DzennikPodrozy"
        android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:exported="true">
    </activity>

然后:-

即根据 DzennikPodrozy 活动的布局,TextView 具有青色背景。

© www.soinside.com 2019 - 2024. All rights reserved.