2015-04-06 92 views
0

我有一個問題。我在我的項目中使用WebView對象。在MainActivity.java代碼端我使用webbBrowser.setWebViewClient(new ViewBrowser());
如何獲得標題onPageFinished()(webview)?

存在具有名稱ViewBrowser.java秒類這個文件被擴展爲WebViewClient。

通過在該Java文件使用該客戶端服務有2個功能推翻

1 - shouldOverrideUrlLoading(web視圖視圖,字符串URL)
2 - onPageFinished(web視圖視圖,字符串URL)

onPageFinished()我已經使用view.getTitle();我想在我的MainActivity類中將此標題設置爲TextView。任何身體都可以幫助我。

這是我MainActivity.java類:

public class MainActivity extends Activity implements OnClickListener { 

Button bttnSearch; 
EditText txttInput; 
TextView txttView; 
WebView webbBrowser; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.activity_main); 

    bttnSearch = (Button) findViewById(R.id.btnGo); 
    txttInput = (EditText) findViewById(R.id.txtInput); 
    txttView = (TextView) findViewById(R.id.txtView); 
    webbBrowser = (WebView) findViewById(R.id.broWebView); 

    webbBrowser.setWebViewClient(new ViewBrowser()); 
    webbBrowser.getSettings().setLoadsImagesAutomatically(true); 
    webbBrowser.getSettings().setJavaScriptEnabled(true); 
    webbBrowser.getSettings().setLoadWithOverviewMode(true); 
    webbBrowser.getSettings().setUseWideViewPort(true); 
    webbBrowser.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
    webbBrowser.setScrollbarFadingEnabled(true); 

    webbBrowser.loadUrl("http:/www.google.com"); 

    bttnSearch.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    String urlText; 
    urlText = txttInput.getText().toString(); 

    switch(v.getId()){ 
    case R.id.btnGo: 
     InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); 
     webbBrowser.loadUrl(urlText); 

     break; 
    }  
} } 

這是我ViewBrowser.java:

public class QaziViewBrowser extends WebViewClient { 

//private Toast txttView; 

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    // TODO Auto-generated method stub 
    view.loadUrl(url); 
    return super.shouldOverrideUrlLoading(view, url); 
} 

@Override 
public void onPageFinished(WebView view, String url) { 
    // TODO Auto-generated method stub 
    super.onPageFinished(view, url); 
    // i want to get Title text of the web page and set to txttView 
} 


} 
+0

您可以使用廣播和意圖發送標題 – 2015-04-06 12:48:03

+0

@Turtle我添加了代碼並提及我想要的內容。謝謝你的回覆 – falcons 2015-04-06 14:36:22

+0

@SyedRazaMehdi你可以寫一些代碼或者告訴我廣播和意圖代碼在哪裏。謝謝回覆 – falcons 2015-04-06 14:39:25

回答

0

您可以使用Jsoup庫(下載鏈接:http://jsoup.org/)。

和onPageFinished()在你下面的代碼

onPageFinished(WebView view, String url){ 
     new ContentDownloader(url).execute(); 
    } 

    private class ContentDownloader extends AsyncTask<Void, Void, Void> 
    { 
     Document document; 
     String url; 

     public ContentDownloader(String p_url) 
     { 
      url = p_url; 
     } 

     @Override 
     protected void onPreExecute() 
     { 
      super.onPreExecute(); 
      m_progressDialog = ProgressDialog.show(MainActivity.this, "Wait", "Content Downloading.."); 
     } 

     @Override 
     protected Void doInBackground(Void... params) 
     { 
      try 
      { 
       document = Jsoup.connect(url).post(); 
      } 
      catch (IOException e) 
      { 
       e.printStackTrace(); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) 
     { 
      if(document != null) { 
       m_tvTitle.setText(m_document.title()); 
      } 

      m_progressDialog.dismiss(); 
     } 
1

方法使用活動上創建這樣註冊

registerReceiver(updateText, new IntentFilter("UPDATE_TEXT")); 

的onDestroy廣播註銷

unregisterReceiver(updateText); 

使廣播reciever

BroadcastReceiver updateText = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.i(TAG, "onReceive()"); 
     // check if intent is not null and other verification if needed 
     TextView.setText(intent.getStringExtra("title")); 
    } 
}; 

在網頁視圖類什麼ü需要做的就是火boradcast把冠軍意圖

 Intent intentToBroadcast = new Intent("UPDATE_TEXT"); 
     intentToBroadcast.putExtra(title, webview.getTitle()); 
     mContext.sendBroadcast(intentToBroadcast); 

我還沒有試運行這段代碼,但是這是將工作的邏輯,希望它幫助。

1

它很簡單。

在回調onPageFinished你可以得到加載頁面的標題。

@Override 
public void onPageFinished(WebView view, String url) { 
    // TODO Auto-generated method stub 
    super.onPageFinished(view, url); 
    // i want to get Title text of the web page and set to txttView 
    String title = view.getTitle(); 
    // Use title where ever and which ever way you want. 
}