0

以下のようにデータベースに文字列があります

Sring a = "Victory to the <a href='word1'>GOD<\/a>, renowned in <a href='word2'>all three worlds!<\/a>";
text1.setText(Html.fromHtml(a));

ここで、別の textView プロパティを設定するのに役立つ両方のハイパーリンク ID (word1および) が必要です。どうすればそれができるか教えてもらえますか?またはこれを達成するための他のアプローチはありますか?word2link

4

3 に答える 3

1

textview の代わりに Webview を使用してこれを達成し、URL を上書きするカスタム Webview クライアントを作成しました。

webview1.setWebViewClient(new myWebViewClient());
webview1.loadData(myHTMLStringWithHyperlinks, "text/html", "UTF-8");

private class myWebViewClient extends WebViewClient {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            Log.i(TAG, "Id of hyperlink text is: "+url);

            }

            return true;
        }

    }
于 2013-02-18T09:48:30.153 に答える
0

大木ここに、現時点で私の頭に浮かぶ私の2つの解決策があります:

1. 独自のスキーマを実装します:

http://最初に、すべて(またはhttps//、問題をキャッチした URL スキーマ) をカスタム スキーマに置き換える必要がありcustomSchema://ます。

a.replaceAll("[\\"\']{1}[a-zA-Z]+:\/\/[\\"\']{1}", "customSchema://");

(正規表現はよくわからないので、ここに書いておきます)

次に、 AndroidManifest.xml でアクティビティがこの種のスキーマを処理できることを宣言します。

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="customSchema" />
</intent-filter>

この時点で、クリックされたすべての customSchema://... URL に対してアクティビティが起動されます (他のアプリケーションでも)。

アクティビティの URL を取得して、必要なことを行うだけです。

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  // Get the intent that started this activity
  Intent intent = getIntent();
  Uri data = intent.getData();
}

クリックを開始するのがあなたのアクティビティである場合は、onNewIntentを参照してください

2.私の意見では、2番目の解決策はこれが最も簡単です。

文字列を別々のものに分割します。目標は、次のように、「word1」、「word2」を別の TextView に分離することです。

<TextView 1 (Victory to the) /><TexTview 2 (word1 GOD) /><TextView 3 (renowned in) /><TextView 4 (word2 all three worlds) />

正規表現を使えば簡単にできます

setTag()タグ ( )内の TextView 2 と TextView 4 に word1 と word2 を設定して、後で取得することができます。

TextView 2 と TextView 4 で onClick イベントを登録し、それらで必要なことを行います (ここでタグを取得します ( getTag())

于 2013-02-15T14:30:35.893 に答える
0

SubString メソッドを使用して、ID のhref='の位置の検索を識別します。サブストリングを含む一時変数を作成します。

"word1'>GOD<\/a>, renowned in <a href='word2'>all three worlds!<\/a>"

次に、 ' temp-vars の最初の文字から SubStringの位置を検索し、 '位置にID が含まれるまで検索します。

次に、この SubString を temp-var に入れます。

>GOD<\/a>, renowned in <a href='word2'>all three worlds!<\/a>"

これで、前の手順を繰り返して 2 番目の ID を受け取ることができます

于 2013-02-15T11:19:46.480 に答える