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

在AppCompatDialogFragment中点击OK按钮启动新Activity失效如何解决

问题排查&修复方案

可能的失效原因

  • 没有在AndroidManifest.xml中注册NewList Activity,跳转时抛出异常未被捕获,逻辑直接中断
  • mActivity存在空指针风险:getContext()在Fragment和宿主Activity解绑时会返回null,此时调用startActivity会触发空指针异常导致跳转失效
  • 未捕获跳转过程中的异常,无法定位具体错误点

修复后的代码

public class NameOfNewList extends AppCompatDialogFragment {

    @NonNull
    @Override
    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity());
        LayoutInflater layoutInflater = requireActivity().getLayoutInflater();

        builder.setTitle("Nowa lista")
                .setView(layoutInflater.inflate(R.layout.activity_new_list_dialog, null))
                .setNegativeButton("Cancel", (dialog, which) -> dialog.dismiss())
                .setPositiveButton("OK", (dialog, which) -> startNewList());

        return builder.create();
    }

    public void startNewList() {
        // 提前检查上下文有效性,避免空指针
        if (getContext() == null) {
            return;
        }
        try {
            Intent intent = new Intent(requireContext(), NewList.class);
            // 如有传参需求可在此处调用intent.putExtra方法添加参数
            startActivity(intent);
        } catch (ActivityNotFoundException e) {
            // 打印异常日志方便排查,也可增加Toast提示用户
            e.printStackTrace();
        }
    }
}

额外必查项

打开AndroidManifest.xml,确认已经添加NewList的注册配置,示例如下:

<activity
    android:name=".NewList"
    android:exported="false" />

如果NewList需要被外部应用打开,将android:exported属性值改为true即可。
如果修改后仍然无法跳转,可运行时打开Logcat控制台,筛选Error级别的日志,查看跳转时是否有其他异常抛出,可直接定位具体问题。

内容的提问来源于stack exchange,提问作者Mikołaj Garbula

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:45:00