Activity 未在 AndroidManifest.xml 中声明,即使它是

Posted

技术标签:

【中文标题】Activity 未在 AndroidManifest.xml 中声明,即使它是【英文标题】:Activity not declared in AndroidManifest.xml even if it is 【发布时间】:2018-11-19 06:54:11 【问题描述】:

突然出现以下错误:

android.content.ActivityNotFoundException:找不到明确的活动类。

虽然我已经在文件AndroidManifest.xml 中声明了我的应用程序的所有活动。 有谁知道如何解决这个错误? 谢谢大家

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.uniparthenope.jacoe.homework_tmm">
<uses-feature android:name="android.hardware.camera"
              android:required="true"/>

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

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".SignUpActivity"
        android:parentActivityName=".MainActivity">
    <!-- The meta-data tag is required if you support API level 15 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".MainActivity"/>
</activity>
</application>

</manifest>

这是我的MainActivity.java,我在其中通过 Intent 调用活动SignUpActivity.java

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity 

private TabLayout tabLayout;
private ViewPager viewPager;

ChatFragment chatFragment;
CallsFragment callsFragment;
StatusFragment statusFragment;
PhotoFragment  photoFragment;

String[] tabTitle = "FOTO", "CHIAMATE", "CHAT", "STATO";
int[] unreadCount = 0, 0, 5, 0;

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

    Toolbar toolbarapp = (Toolbar) findViewById(R.id.Whatsapp_tmm_toolbar);
    setSupportActionBar(toolbarapp);


    viewPager = (ViewPager) findViewById(R.id.viewpager);
    viewPager.setOffscreenPageLimit(4);
    setupViewPager(viewPager);

    tabLayout = (TabLayout) findViewById(R.id.tablayout);
    tabLayout.setupWithViewPager(viewPager);

    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() 
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) 

        

        @Override
        public void onPageSelected(int position) 
            viewPager.setCurrentItem(position, false);

        

        @Override
        public void onPageScrollStateChanged(int state) 

        
    );



@Override
public boolean onCreateOptionsMenu(Menu menu) 
    getMenuInflater().inflate(R.menu.menu_button, menu);
    return true;


@Override
public boolean onOptionsItemSelected(MenuItem item) 
    // Handle item selection
    switch (item.getItemId()) 
        case R.id.login:
             Intent login = new Intent(this, SignUpActivity.class);
             startActivity(login);
             finish();
             return true;

【问题讨论】:

您在哪个活动中收到此错误?你是如何开始活动的? 你的项目中有子包吗? @Sagar 我在 MainActivity 中遇到了这个错误,正是在我调用 SignUpActivity 时。我正在使用意图启动 SignUpActivity。 @Derlin 没有只有一个包 卸载重装应用后,我修复了,谢谢大家;) 【参考方案1】:

尝试在 Android Studio->Files->Sync Project with Gradle Files 中使用“同步项目与 Gradle 文件”同步。

有时我们在对 Manifest 进行更改后会错过这样做。

【讨论】:

非常感谢,这实际上是为我工作 :) 同步有时效率低下。重新启动 Android Studio 即可解决此问题。【参考方案2】:

我在 Android Studio 4.0.1、android gradle 4.0.1 build gradle 6.1.1 上遇到了这个问题,无法通过此处的答案解决。

最终为我解决的问题是转到我的 app 文件夹并删除整个 .gradle 文件夹,然后使缓存无效并重新启动。正常的缓存失效不起作用。重建、清理、与 gradle 同步:如果没有我进入并删除整个 .gradle 文件夹,这些都不起作用。

【讨论】:

【参考方案3】:

尝试将活动名称作为包名和活动名称。 喜欢,

<activity name="com.uniparthenope.jacoe.homework_tmm.MainActivity" />

这将从描述的位置获取 id。

【讨论】:

在活动名称扩展到此之前给出 [dot]。为什么要明确写全名?

以上是关于Activity 未在 AndroidManifest.xml 中声明,即使它是的主要内容,如果未能解决你的问题,请参考以下文章

Activity 未在清单中注册 Lint 警告

Realm 实例未在 Activity#onDestroy 上关闭

Activity 未在 AndroidManifest.xml 中声明,即使它是

onItemClickListener 未在自定义 ArrayAdapter 上触发

未在动态SQL中存储值

输入值未在我传入 Intents 的另一个活动中更新