Открыть URL-адрес из текстового представления нажатием - PullRequest
0 голосов
/ 30 октября 2018

Я разрабатываю приложение чата с использованием RecycleView, и мне удалось сделать ссылки на сообщения активными, но не так, как я хотел.

Это мой слушатель:

recyclerView.addOnItemTouchListener(new Chat_LVAdapter.RecyclerClickListener(this, recyclerView, new ClickListener() {
        @Override
        public void onClick(View view, final int position) {
            Toast.makeText(Chat.this, "CLICK!", Toast.LENGTH_SHORT).show();
            TextView textView = view.findViewById(R.id.textView_chati_message);

            textView.setLinksClickable(true);
            Linkify.addLinks(textView, Linkify.WEB_URLS);
            textView.setMovementMethod(LinkMovementMethod.getInstance());

            /*Intent intent = new Intent(Chat.this, WebViewer.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.putExtra("url_web", extractUrls(textView.getText().toString()));
            startActivity(intent);*/
        }

        @Override
        public void onLongClick(View view, int position) {
            TextView textView = view.findViewById(R.id.textView_chati_message);
            String msg = textView.getText().toString();
            ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
            if(clipboard != null){
                ClipData clip = ClipData.newPlainText("msg", msg);
                clipboard.setPrimaryClip(clip);
            }
            Toast.makeText(Chat.this, R.string.texto_copiado, Toast.LENGTH_LONG).show();
        }
    }));

Это TextView xml:

<TextView
            android:id="@+id/textView_chati_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:autoLink="web"
            android:focusable="true"
            android:clickable="true"
            android:textColor="#000"
            android:textSize="16sp" />

Проблема связана с методом onClick. Я вижу Toast, поэтому метод работает, но не открывает ссылку. Это работает, только если я дважды коснусь или если я буду долго нажимать. Если я использую закомментированный код, запуская WebView с Intent, он тоже работает. Но я хочу иметь возможность использовать Linkify для электронной почты и т. Д.

Я что-то упустил? Почему Toast работает, а не Linkify?

1 Ответ

0 голосов
/ 30 октября 2018

Проблема вашего алгоритма в том, что вы создаете текстовую ссылку с первого клика, поэтому второй клик будет работать нормально. переместить этот код:

TextView textView = view.findViewById(R.id.textView_chati_message);
textView.setLinksClickable(true);
Linkify.addLinks(textView, Linkify.WEB_URLS);
textView.setMovementMethod(LinkMovementMethod.getInstance());

на переработку ViewHolder

...