'The clear method in SpannableStringBuilder removes the spans

I have a question.

Code:

@Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        FragmentProfileBinding fragmentProfileBinding = FragmentProfileBinding.inflate(getLayoutInflater());

        String[] list = {"123", "456", "789"};

        //Default
        fragmentProfileBinding.txt.setText(list[0]);

        SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(fragmentProfileBinding.txt.getText());
        spannableStringBuilder.setSpan(new ClickableSpan() {
            @Override
            public void onClick(@NonNull View view) {
                new AlertDialog.Builder(requireContext())
                        .setItems(list, (dialogInterface, i) -> {
                            spannableStringBuilder.clear();
                            spannableStringBuilder.append(list[i]);
                            fragmentProfileBinding.txt.setText(spannableStringBuilder);
                        })
                        .show();
            }
        }, 0, fragmentProfileBinding.txt.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
        fragmentProfileBinding.txt.setText(spannableStringBuilder);
        fragmentProfileBinding.txt.setLinkTextColor(Color.parseColor("#3897f0"));
        fragmentProfileBinding.txt.setMovementMethod(LinkMovementMethod.getInstance());

        return fragmentProfileBinding.getRoot();
    }

When changing the value from 123 to 456 or 789, The spans will remove and the text will no longer be clickable, Why?

How can you help me?

Thank you.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source