Как устранить ошибку в файле AndroidManifest «Неразрешенный класс ‘MainActivity'»?

#java #android #xml #android-studio

Вопрос:

В моем файле AndroidManifest отображается ошибка «Неразрешенный класс «MainActivity»», но у меня есть класс java и файл с таким именем в пакете , и он должен быть первым действием программы, поэтому, когда я пытаюсь запустить программу, она выходит из строя, я проверил свой код, но не смог найти там никаких проблем .

java-код для файла MainActivity

 package com.example.tictactoe;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.content.Intent;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    Button forward;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        forward = (Button)findViewById(R.id.start);
        forward.setOnClickListener(new View.OnClickListener()
                                    {
                                       @Override
                                       public void onClick(View v)
                                       {
                                           startActivity(new Intent(MainActivity.this,GameUi.class));
                                       }
                                    });
    }
    @Override
    public void onBackPressed() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setCancelable(false);
        builder.setMessage("Do you want to Exit?");
        builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                finish();
            }
        });
        builder.setNegativeButton("No",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });
        AlertDialog alert=builder.create();
        alert.show();
    }
}
 

java-код для второго действия, которое использует моя программа («GameUi.java»)

 package com.example.tictactoe

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.os.Bundle;

public class GameUi extends AppCompatActivity {
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game_ui);
        btn=(Button)findViewById(R.id.backbtn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    startActivity(new Intent(GameUi.this, MainActivity.class));
            }
        });
    }
}
 

AndroidManifest file code

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

    <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/Theme.TicTacToe">
        <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=".GameUi">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

Код 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:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#E5E6AD"
        tools:context=".MainActivity">
    <TextView
        android:id="@ id/Heading"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_row="0"
        android:layout_column="0"
        android:layout_marginBottom="332dp"
        android:editable="false"
        android:text="Hello Aliens!"
        android:textAlignment="center"
        android:textColor="#000000"
        android:textSize="50dp"
        android:textStyle="bold|italic"
        app:layout_constraintBottom_toBottomOf="parent"
        tools:layout_editor_absoluteX="16dp" />

    <ImageView
        android:id="@ id/Alienimg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="36dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@id/Heading"
        app:srcCompat="@drawable/ic_launcher_foreground" />
    
    <Button
        android:id="@ id/Startbtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#000066"
        android:letterSpacing="0.5"
        android:padding="0dp"
        android:text="Start"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@ id/Alienimg"
        app:layout_constraintVertical_bias="0.886" />

</androidx.constraintlayout.widget.ConstraintLayout>
 

введите описание изображения здесь

Комментарии:

1. Вставьте свою ошибку logcat при сбое приложения.

2. пожалуйста, вставьте activity_main.xml

3. Файл (Верхнее меню) -> Аннулировать кэш / перезапустить. Это должно решить вашу проблему

Ответ №1:

В твоем классе я не вижу пакета сверху. Попробуйте добавить его и посмотрите, если вы все еще сталкиваетесь с проблемой, попробуйте аннулировать и перезапустить.

 package com.example.tictactoe;
 

Комментарии:

1. На самом деле я добавил файлы в пакет , который я пропустил, чтобы показать это на stackoverflow, Извините, что я исправил это сейчас.

Ответ №2:

Это является причиной ошибки

 <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=".GameUi">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

фильтр намерений используется для определения того, какое действие будет вашим первым действием ( при запуске приложения для Android ). Вы можете использовать его в обоих действиях, чтобы приложение перепутало, какое из них является вашим первым действием, поэтому они выдают ошибку.

В случае, если основная активность-это ваше первое действие

 <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=".GameUi">
            
        </activity>

 

Комментарии:

1. Я так не думаю. это проблема, верно. но это просто делает два приложения, которые открываются в разных видах деятельности.

2. Это не причина сбоя, я проверил это в своем приложении, работает.

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

4. @Паста Ачинтяшарма activity_main.xml

Ответ №3:

Ваш манифест в порядке ( я думаю, вы исправили проблему с фильтром намерений на основе ответа Абдуллы Шейха). проблема заключается в том, что эта строка в MainActivity :

     forward = (Button)findViewById(R.id.start);
 

потому что ваш идентификатор кнопки Startbtn не start

просто замените это на :

 forward = (Button)findViewById(R.id.Startbtn);
 

также в activity_main и ImageView удалите

app:srcCompat="@drawable/ic_launcher_foreground"

или найдите другой src для рисования.