WebView の JavascriptInterface に奇妙な問題があります。アクションバーのタイトルをJavascriptで変更したい。onPageFinished が呼び出されたときに発生するはずです。何も起こりません (新しいタイトルの最初の文字の後に '...' が続く場合があります)。しかし: ホーム ボタンを押してからアプリケーションに戻ると、タイトルが変更されます。タイトルをすぐに変更するにはどうすればよいですか?
私の例では、私は呼び出します
w1.loadUrl("http://www.google.com");
オンページで終了
w1.loadUrl("javascript:window.jsin.abtitle(document.title)");
タイトルを html タイトル (この場合は「Google」) に変更します。
@JavascriptInterface
public void abtitle(String s){
((MainActivity)mContext).getActionBar().setTitle(s);
}
ページの読み込みが完了した後、アクションバーのタイトルは「G...」です ホームボタンを押してアプリに戻ると、タイトルは「Google」になります
これは私の活動です:
package com.example.test;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
WebView w1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
w1=(WebView)findViewById(R.id.webView1);
w1.getSettings().setJavaScriptEnabled(true);
w1.setWebViewClient(wc1);
w1.addJavascriptInterface(new MyJavascriptInterface(this), "jsin");
w1.loadUrl("http://www.google.com");
}
public WebViewClient wc1 = new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
w1.loadUrl("javascript:window.jsin.abtitle(document.title)");
super.onPageFinished(view, url);
};
};
public class MyJavascriptInterface{
Context mContext;
public MyJavascriptInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void abtitle(String s){
((MainActivity)mContext).getActionBar().setTitle(s);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
}
これは私のレイアウトです:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<WebView
android:id="@+id/webView1"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>