Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何知道选择了TextView的哪个部分_Android_Android Fragments_Textview_Onclicklistener - Fatal编程技术网

Android 如何知道选择了TextView的哪个部分

Android 如何知道选择了TextView的哪个部分,android,android-fragments,textview,onclicklistener,Android,Android Fragments,Textview,Onclicklistener,我根据从xml文章中解析的文本动态填充活动的TextView。文本使用html标记格式化,因此我将文本设置为: textViewBody.setText(Html.fromHtml(content)); 这些文章可以设置为正文中的某些文本、网站、其他本地文章,或者只是显示文本。以前,我们最多只有一个链接,所以我使用了以下代码: textViewBody.setOnClickListener(new View.OnClickListener() { @Overri

我根据从xml文章中解析的文本动态填充活动的TextView。文本使用html标记格式化,因此我将文本设置为:

textViewBody.setText(Html.fromHtml(content));
这些文章可以设置为正文中的某些文本、网站、其他本地文章,或者只是显示文本。以前,我们最多只有一个链接,所以我使用了以下代码:

textViewBody.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (textViewBody.getUrls().length != 0) {
                        String link = textViewBody.getUrls()[0].getURL();

                        Intent i;

                        if (link.startsWith("article")) {
                            i = new Intent(getActivity().getApplicationContext(), ArticleActivity.class);
                            i.putExtra("file", link.substring(10));
                            i.putExtra("title", parentView.article.title);
                            startActivity(i);
                        } else if (link.startsWith("http")) {
                            i = new Intent(Intent.ACTION_VIEW);
                            i.setData(Uri.parse(link));
                            startActivity(i);
                        }
                    } else {
                        // Regular body text was selected.
                    }
                }
            });
这非常有效,但是现在有些文章有不止一个链接,它只打开第一个链接(这就是我设置它的目的)。我的问题是,我如何设置textview来知道我点击了什么链接?同样,这个文本是动态的(大约有200多篇xml文章),因此我无法根据已知的链接列表检查字符串的内容


可能需要注意的是,这是在片段上完成的(ArticleActivity是一个tabHost,其中一个选项卡显示文章的文本)。

甚至不要尝试通过onTouch来完成。使用span,并将每个链接放在可单击的span-内。然后,当文本被单击时,它的onClick方法将被调用,它可以执行它需要执行的任何操作。

我认为这是获取选定文本并在textview上找到开始和结束选定文本的简单方法

TextView mTextView = findViewById(R.id.textView);
if (mTextView.isFocused()) {
    final int selStart = mTextView.getSelectionStart();
    final int selEnd   = mTextView.getSelectionEnd();
    int min = Math.max(0, Math.min(selStart, selEnd));
    int max = Math.max(0, Math.max(selStart, selEnd));
    final CharSequence selectedText = mTextView.getText().subSequence(min, max);
    Toast.makeText(getApplicationContext(), selectedText, Toast.LENGTH_SHORT).show();
    selected = selectedCafeWeb;
    Toast.makeText(getBaseContext(), selected + " " + selectedText.toString(), Toast.LENGTH_SHORT);
}

这需要一些额外的代码,但这使我找到了我的解决方案。