2014-06-16 116 views
3

我有一個文本視圖。在這我有這樣的文字「你可以訪問這個:http://www.google.com」。點擊此鏈接後,應該在webview中打開它,而不是默認瀏覽器。我的代碼是:點擊texview中的鏈接後,如何在webview而不是默認瀏覽器中打開該鏈接?

//MainActivity.java

link = (TextView) findViewById(R.id.textView); 
link.setText("You may visit here : http://www.google.com"); 
link.setMovementMethod(LinkMovementMethod.getInstance()); 

//清單

<activity 
      android:name="com.xpointers.xpmediaapp.mediaapp.WebViewActivity" 
      android:label="@string/app_name"> 
      <intent-filter> 

       <category android:name="android.intent.category.DEFAULT" /> 
       <action android:name="android.intent.action.VIEW" /> 

      </intent-filter> 
     </activity> 

我嘗試使用此鏈接:handle textview link click in my android app但未能理解和我應該在WebviewActivity寫? 請幫我解決這個問題。

+0

http://stackoverflow.com/questions/22962621/open-url-in-webview-instead-of-default-browser – duggu

+0

@Golu我得到這個,但有沒有必要使用點擊監聽器的文本視圖也? – Ak10147

+0

查看Emanuel Moecklin的回答 – duggu

回答

8

以下亟待解決的問題:

Linkify TextView的 找到一個方法來收聽TextView的 一個鏈接的點擊獲得點擊鏈接的URL,並在WebView中加載它 可選:讓TextView的點擊不失進行選擇的能力文本 可選:處理在TextView的格式化文本(不同的文字大小和樣式)

1 Linkify TextView的

String text = "These are some sample links:\nwww.google.com\nwww.facebook.com\nwww.yahoo.com"; 
Spannable spannable = new SpannableString(Html.fromHtml(text)); 
Linkify.addLinks(spannable, Linkify.WEB_URLS); 

2 +#3聽點擊的鏈接,並在網頁視圖

URLSpan[] spans = spannable.getSpans(0, spannable.length(), URLSpan.class); 
for (URLSpan urlSpan : spans) { 
    LinkSpan linkSpan = new LinkSpan(urlSpan.getURL()); 
    int spanStart = spannable.getSpanStart(urlSpan); 
    int spanEnd = spannable.getSpanEnd(urlSpan); 
    spannable.setSpan(linkSpan, spanStart, spanEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
    spannable.removeSpan(urlSpan); 
} 

打開它們對於新的活動開幕:

private class LinkSpan extends URLSpan { 
     private LinkSpan(String url) { 
      super(url); 
     } 

     @Override 
     public void onClick(View view) { 
      String url = getURL(); 
      if (url != null) { 


       startActivity(new Intent(LinkTestActivity.this,WebViewActivity.class).putExtra("url",url)); 

      } 
     } 
    } 

而且裝載儀的URL的網頁視圖。

更多見下面的鏈接: -

Open URL in WebView instead of default Browser

+0

感謝它對我有用:) – Ak10147

+0

當我嘗試使用textview.setText(text)這樣的結果字符串設置文本時;它向我顯示純文本,甚至沒有提供點擊它。我還需要如何設置文本? – NarendraJi

+0

@King,使用'setText(Html.fromHtml(s))',其中s應該包含一個文本,如「see here:< a href =」http://example.com/「>示例</a>」 – CoolMind

1

從發佈的鏈接開始,您應該在Manifest文件中聲明您的某個活動可以打開鏈接。點擊此鏈接時,您的活動已打開,因此您應將啓動模式設置爲singleTop。然後,您可以接收新的意圖並將其顯示在您的網頁視圖中。 onNewIntent: http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent)

這個例子是有關實現搜索,這樣你就可以跳到 「singleTop」 的一部分: http://developer.android.com/guide/topics/search/search-dialog.html

+0

@ user188959仍然無法正常工作。 – Ak10147

1

將此代碼後link.setText(--url--);

((TextView) findViewById(R.id.textView)).setOnClickListener(
    new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String url = ((TextView) findViewById(R.id.account_title)) 
       .getText().toString(); 
      WebView webView = (WebView) findViewById(R.id.wv); 
      webView.getSettings().setJavaScriptEnabled(true); 
      webView.loadUrl(url); 
     } 
    } 
); 

創建一個web視圖您相關的xml文件,如下所示:

<WebView android:id="@+id/wv" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

就是這樣...... 讓我知道你是否仍然有問題。需要

+0

兄弟我想在新的活動中打開它。 – Ak10147

+0

@ Ak10147沒有問題,您可以使用相同的腳本進行新的活動,只需創建一個新的JAVA類,然後將java代碼放入onCreate()方法中,然後創建一個新的.XML文件並將其放在父代佈局的上方xml代碼中。 – Ahsanwarsi

相關問題