0

私はテキストビューを持っていて、サイトを誘導するリンクとしてテキストを設定したいのですが、問題はクリックできないことです:

                    Grades = (TextView) findViewById(R.id.textView9);
                    Grades.setText(Html.fromHtml(course.getString(TAG_Grade)));

                Grades.setOnClickListener(new View.OnClickListener() {

                    public void onClick(View v) {

                        WebView webView; webView.setWebViewClient(new WebViewClient()
                        {

                        }webView.loadUrl(course.getString(TAG_Grade)); });

そしてxml:

<TextView 
    android:id="@+id/textView9"
    android:layout_marginLeft="110dp"
    android:layout_marginTop="365dp"
    android:textColor="#000"
    android:textSize="14sp"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:autoLink="web"
    android:onClick="onClick"
/>

それがdbからURLを取得することを知っていcourse.getString(TAG_Grade)ますが、機能しません

何が問題ですか?

4

5 に答える 5

3

これを使用しましたandroid:clickable="true"

<TextView 
    android:id="@+id/textView9"
    android:layout_marginLeft="110dp"
    android:layout_marginTop="365dp"
    android:textColor="#000"
    android:textSize="14sp"
    android:clickable="true"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
     android:autoLink="web"
     android:onClick="onClick"
/>
于 2012-12-20T09:54:08.707 に答える
3

ビューがクリックされた後にリンク化しようとしていますが、onClick 内からリンク化を削除しました。


あなたは間違った方法でそれについて行っています。

これを試して:

String userCanSeeThis = "Your Website Name";
String url = course.getString(TAG_Grade);

TextView grades = (TextView) findViewById(R.id.textView9);
grades.setText(userCanSeeThis);

addLinks(Grades, userCanSeeThis, url);

このヘルパー メソッドの使用:

    /**
     * @param textView
     *            textView who's text you want to change
     * @param linkThis
     *            a regex of what text to turn into a link
     * @param toThis
     *            the url you want to send them to
     */
    public static void addLinks(TextView textView, String linkThis, String toThis) {
        Pattern pattern = Pattern.compile(linkThis);
        String scheme = toThis;
        android.text.util.Linkify.addLinks(textView, pattern, scheme, new MatchFilter() {
            @Override
            public boolean acceptMatch(CharSequence s, int start, int end) {
                return true;
            }
        }, new TransformFilter() {

            @Override
            public String transformUrl(Matcher match, String url) {
                return "";
            }
        });
    }

またonClickListener、コードでを設定すると、XML でgrades.setOnClickListener必要ありませんandroid:onClick=""

于 2012-12-20T09:56:03.663 に答える
2

使用する代わりに、Linkify私は以下の行を好むでしょう:

 Html.fromHtml(course.getString(TAG_Grade));
于 2012-12-20T09:54:03.740 に答える
1

Linkifyに関して十分な回答を受け取りましたが、コードにもう1つの微妙なエラーがあります。

android:onClickあなたは彼の属性を:の方法とonClick間違えていますView.onClickListener

属性は次のようにandroid:onClick機能します。

ビューがクリックされたときに呼び出す、このビューのコンテキスト内のメソッドの名前。この名前は、View型のパラメーターを1つだけ取るパブリックメソッドに対応している必要があります。たとえば、android:onClick = "sayHello"を指定する場合は、コンテキスト(通常はアクティビティ)のpublic void sayHello(View v)メソッドを宣言する必要があります。

-interfaceonClickによって提供される-methodについては、次のようになります。View.onClickListener

view.setOnClickListener(...)

このビューがクリックされたときに呼び出されるコールバックを登録します。このビューがクリックできない場合は、クリック可能になります。

これにより、関数をオーバーライドできます:

public abstract void onClick (View v)

これは、ビューがクリックされたときに呼び出されます。

于 2012-12-20T10:04:55.970 に答える
1
TextView myWebSite = new TextView(this);
myWebSite .setText("http://www.google.com/");
Linkify.addLinks(myWebSite , Linkify.WEB_URLS);
于 2012-12-20T10:02:18.797 に答える