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

Android开发问题:ListView跳转Activity传字符串时应用崩溃

嘿,我来帮你搞定这个ListView点击跳转崩溃的问题!这种情况我碰到过好多次,大概率是下面几个常见坑之一,咱们一个个排查:

1. 目标Activity没在Manifest里注册

这是新手最容易踩的坑!如果你跳转到的那个展示学校详情的Activity没在AndroidManifest.xml里声明,系统找不到它就会直接崩溃。

解决方案:
打开AndroidManifest.xml,在<application>标签里加上目标Activity的注册代码:

<activity android:name=".SchoolDetailActivity" />
<!-- 这里的.SchoolDetailActivity要换成你实际的目标Activity类名 -->

2. ListView点击事件的Intent代码写错了

可能是获取学校名称时出现空指针,或者Intent的上下文/目标类写错了。给你一个标准的正确写法参考:

// 假设你的ListView对象叫listView
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // 1. 获取点击的学校名称
        // 如果你的Adapter是用String数组填充的,直接这样取:
        String schoolName = (String) parent.getItemAtPosition(position);
        // 如果是自定义的School对象Adapter,就强转成你的对象再取属性:
        // School selectedSchool = (School) parent.getItemAtPosition(position);
        // String schoolName = selectedSchool.getSchoolName();

        // 2. 创建Intent并传递数据
        Intent intent = new Intent(YourCurrentActivity.this, SchoolDetailActivity.class);
        // 用一个唯一的键传递数据,比如"SCHOOL_NAME"
        intent.putExtra("SCHOOL_NAME", schoolName);
        
        // 3. 启动Activity
        startActivity(intent);
    }
});

注意:这里的YourCurrentActivity要换成你当前这个带ListView的Activity类名,SchoolDetailActivity换成目标Activity的类名。

3. 目标Activity接收数据时没处理空值

如果传递过来的学校名称是空的,或者你获取数据时键名写错了,就会触发空指针崩溃。

解决方案:在目标Activity里先判空再处理:

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

    // 获取传递过来的Intent
    Intent receivedIntent = getIntent();
    if (receivedIntent != null) {
        // 注意这里的键名要和传递时的完全一致!
        String schoolName = receivedIntent.getStringExtra("SCHOOL_NAME");
        if (schoolName != null) {
            // 把学校名称展示到TextView里
            TextView tvSchoolName = findViewById(R.id.tv_school_name);
            tvSchoolName.setText(schoolName);
        } else {
            // 处理没有拿到数据的情况,比如显示默认文本
            Toast.makeText(this, "未获取到学校信息", Toast.LENGTH_SHORT).show();
        }
    }
}

4. 别忘了看Logcat的崩溃日志!

上面的都是常见情况,但最准确的还是看系统抛出的崩溃信息。打开Android Studio的Logcat面板,搜索FATAL EXCEPTION,找到崩溃的异常类型(比如ActivityNotFoundException、NullPointerException)和报错的行号,能直接定位到问题所在。

比如如果看到ActivityNotFoundException,那肯定是第1种情况;如果是NullPointerException,就看是哪一行空了,比如获取学校名称的时候,或者找TextView的时候。


内容的提问来源于stack exchange,提问作者Student. Engineering

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:40:27