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

Activity能否向自身发送Intent?点击编辑按钮应用崩溃求助

问题解答

首先直接回应你的第一个疑问:Activity完全可以向自身发送Intent,你只需要像启动其他Activity一样,创建指向自身类的Intent即可,比如:

startActivity(new Intent(this, BeauticianProfile.class));

不过针对你当前的编辑资料场景,其实完全没必要这么做——直接修改控件状态就能实现需求,不用重启Activity。

接下来分析你点击按钮后App崩溃的核心问题,主要有3个关键点:

1. 按钮控件未初始化

你在类里声明了Button btnedit;,但在onCreate方法里没有通过findViewById获取这个按钮的实例,导致onClick方法里调用btnedit.getId()时触发空指针异常(NullPointerException),这是导致崩溃的直接原因。

2. EditText变量作用域冲突

你在类成员位置声明了EditText t1, t2, t3;,但在onCreate里又重新定义了final EditText t1 = ...这类局部变量,这会覆盖类成员变量。当onClick方法尝试访问t1时,实际访问的是未初始化的类成员变量,同样会触发空指针异常。

3. 启用EditText的方式不正确

仅设置setFocusable(true)不足以让EditText变为可编辑状态,你还需要同时设置setFocusableInTouchMode(true),或者更简单的用setEnabled(true)来直接启用控件(初始状态对应setEnabled(false)),这样逻辑更清晰。


修复后的完整代码

public class BeauticianProfile extends AppCompatActivity {
    Button btnedit;
    EditText t1, t2, t3, t4; // 把t4也加入类成员,避免重复定义

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

        // 初始化所有控件(注意替换按钮的实际ID为你布局里的ID)
        btnedit = findViewById(R.id.btn_edit);
        t1 = findViewById(R.id.name);
        t2 = findViewById(R.id.address);
        t3 = findViewById(R.id.email);
        t4 = findViewById(R.id.gender);

        // 初始状态禁用EditText,让它们不可编辑
        t1.setEnabled(false);
        t2.setEnabled(false);
        t3.setEnabled(false);
        t4.setEnabled(false);

        // 接收并设置页面数据,增加空值判断避免崩溃
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            t1.setText(extras.getString("name", ""));
            t2.setText(extras.getString("mobile", ""));
            t3.setText(extras.getString("email", ""));
            t4.setText(extras.getString("gender", ""));
        }
    }

    public void onClick(View v) {
        if (v.getId() == btnedit.getId()) {
            // 启用所有EditText,允许编辑
            t1.setEnabled(true);
            t2.setEnabled(true);
            t3.setEnabled(true);
            t4.setEnabled(true);
        }
    }
}

额外小提示

如果后续需要保存编辑后的内容,可以在按钮点击逻辑里增加保存操作(比如存到SharedPreferences或数据库),完全不需要重启Activity来完成这个流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:34:54