You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中ActivityC无法显示,调用startActivity时触发异常求助

问题分析与解决方案

你遇到的InvocationTargetException本质是sendAnswer方法内部抛出了未捕获的异常,Android框架将其包装成该异常抛出。具体有两个核心问题需要修复:


1. ActivityC未在AndroidManifest.xml中注册

Android系统要求所有要启动的Activity必须在清单文件中声明,否则会直接抛出ActivityNotFoundException,这是触发InvocationTargetException的直接原因。

修复方法:

在application标签内添加ActivityC的注册声明:

<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=".ActivityB"></activity>
    <activity android:name=".ActivityC"></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>

2. ActivityC中引用了不存在的控件ID

在ActivityC.java的onCreate方法中,你尝试获取R.id.textView1,但对应的activity_c.xml里并没有这个ID的TextView(现有可用ID是title和text_answer),这会导致NullPointerException——即使ActivityC能启动,也会立刻崩溃。

修复方法:

修改ActivityC.java中的代码,将控件ID改为布局中存在的ID,同时建议增加空值判断避免额外异常:

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

    Bundle extras = getIntent().getExtras();
    if (extras != null) { // 增加空判断,防止Intent无额外数据时崩溃
        String returnString = extras.getString("returnData");
        final TextView textView = findViewById(R.id.text_answer); // 修改为布局中存在的ID
        textView.setText(returnString);
    }
}

验证修复

完成以上两处修改后重新编译运行:

  • MainActivity跳转到ActivityB的流程正常
  • 在ActivityB输入答案后点击Send Answer,ActivityC会正常启动并显示传递的答案

内容的提问来源于stack exchange,提问作者Tarek EZZAT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 07:22:34