安卓运行报错android.content.ActivityNotFoundException: Unable to find explicit activity class

以下是报错信息:

android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.helloworld/android.widget.TextView}; have you declared this activity in your AndroidManifest.xml?

然后我搜索了一下得到的解决方案是没有将activity在mainfest.xml中注册,但是我已经注册过了,以下是xml中的代码

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

    <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=".TextViewActivity"
                android:label=""></activity>//注册第二个活动
        <activity android:name=".MainActivity">
            //前面的点是包名省略,
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

以下是第二个活动的代码

package com.example.helloworld;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Paint;
import android.os.Bundle;
import android.widget.TextView;

public class TextViewActivity extends AppCompatActivity {


    private TextView tv2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_text_view);
        tv2 = findViewById(R.id.tv2);
        tv2.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);//加入划线
        tv2.getPaint().setAntiAlias(true);//去除锯齿
    }
}

以下是第二个活动的xml代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/tv_test1"
        android:textColor="#000000"
        android:textSize="30sp"
       />//在strings.xml中编辑好后,在这里调用
        //最大行数为一,且显示不下时出现省略号
    <TextView
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:ellipsize="end"
        android:id="@+id/t2"
        android:text="哎哟不错哦!"
        android:textColor="#000000"
        android:textSize="30sp"/>
    //有额外选项或者下拉框(大致这个意思)
    <TextView
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:drawableRight="@drawable/arrow3"
        android:text="for you and me"
        android:textColor="#000000"
        android:textSize="30sp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="xxx"
        android:id="@+id/tv2"
        android:textColor="#000000"
        android:textSize="30sp"
        />
</LinearLayout>

以下是mainactivity的代码(之后补充的)


public class MainActivity extends AppCompatActivity {

    private Button btntv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);//设置内容视图
        btntv = findViewById(R.id.bt_tv1);
        btntv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //跳转到TextView演示界面
                Intent intent = new Intent(MainActivity.this, TextView.class);
                startActivity(intent);
            }
        });
    }
}

3个回答

问题出在mainactivity中

public class MainActivity extends AppCompatActivity {

    private Button btntv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);//设置内容视图
        btntv = findViewById(R.id.bt_tv1);
        btntv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //跳转到TextView演示界面
                Intent intent = new Intent(MainActivity.this, TextViewActivity.class);
                startActivity(intent);
            }
        });
    }
}


将跳转时的 Intent intent = new Intent(MainActivity.this, TextView.class);中的TextView改为TextViewActivity

贴上你跳转TextViewActivity的代码

Incrular
非非非非非非 哦哦哦,我知道哪错了,多谢大佬指点
12 个月之前 回复
Incrular
非非非非非非 大佬,就是这个了
12 个月之前 回复
Incrular
非非非非非非 package com.example.helloworld; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private Button btntv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);//设置内容视图 btntv = findViewById(R.id.bt_tv1); btntv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //跳转到TextView演示界面 Intent intent = new Intent(MainActivity.this, TextView.class); startActivity(intent); } }); } }
12 个月之前 回复

很显然是你启动activity的代码写的不对。
打印中尝试启动这个activity自然是找不到的。
com.example.helloworld/android.widget.TextView
因为你注册的如下,实际上是这个activity:com.example.helloworld/com.example.helloworld.TextViewActivity
android:label="">//注册第二个活动

你可以将启动第二个activity的代码改为如下,注意导包:
Intent intent = new Intent();
intent.setClass(MainActivity.this,TextViewActivity.class);
startActivity(intent);

Incrular
非非非非非非 哦哦哦,我找到问题所在了,多谢大佬指点
12 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问