2015-04-06 3 views
0

У меня проблема. Я использую WebView Object в своем проекте. в MainActivity.java код сторона я использую webbBrowser.setWebViewClient (новый ViewBrowser());
Как получить титул onPageFinished() (webview)?

есть второй класс, имеющее имя ViewBrowser.java этот файл будет увеличен с WebViewClient.

с помощью этого сервиса, но в этом Java-файла есть 2 функции отменяют

1 - shouldOverrideUrlLoading (вид WebView, String URL)
2 - onPageFinished (вид WebView, String URL)

in onPageFinished() я использовал view.getTitle(); Я хочу установить этот заголовок в TextView в моем классе MainActivity. может ли любой орган помочь мне в этом.

это мой 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

вы можете использовать трансляцию и отправить название в намерении –

+0

@Turtle я добавил код и упомянул, что я хочу. спасибо за ответ – falcons

+0

@SyedRazaMehdi можете ли вы написать какой-то код или сообщить мне, где транслировать и делать код намерения. спасибо за ответ – falcons

ответ

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); 

сделать широковещательный приемник

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")); 
    } 
}; 

в классе WebView, что у вас сделать, это огонь 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. 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^