• 締切済み

webviewを使用したandroidアプリ

現在WebViewを使用したandroidアプリを作成中です。 webview領域を更新するボタンを作成したいのですが、 手順がわからず困っています。 内容的には intentにてListViewを生成(タイトルと日付を表示)→リストをクリックすると タイトル(TextView)・日付(TextView)・詳細文言(WebView)が 別Activityにて表示される内容になっています。 詳細文言を表示されるページにてWebView領域更新ボタンを作成したいが うまく行かないという状況です。 現在作成した内容は下記になり、このコードで更新をすると WebView領域には何も表示がされない状況となります。 public boolean onOptionsItemSelected(MenuItem item) { WebView myWebView =(WebView)findViewById(R.id.webView1); switch (item.getItemId()) { case MENU_SELECT_A: //更新が押されたときの処理 myWebView.reload(); return true; } return false; } わかる方がいらっしゃいましたら、ご指導お願いいたします。

みんなの回答

noname#177743
noname#177743
回答No.1

表示するページを設定する処理がないみたいですが、いつ、どういう形でページをロードされているのでしょうか。 reloadは、その前にloadUrlで読み込まれたページをリロードするので、それで表示されないということはページがきちんとロードできていない(あるいはアドレスが違っている)ような気もするのですが……。 表示するページをloadUrlした後でアドレスを操作するなど何かしていますか? ページの読み込みからリロードを実行するまでの間で行われている処理が知りたいところですね。

javamanx
質問者

補足

説明が足らずすみません。 現在はloadUrlを使用せずにサーバー上のxhtmlのデータを読み取って、データをtextview webview に表示している状態になります。 受け取り側のソースは以下の通りです。 public class ItemDetailActivity extends Activity { private static final String WEBVIEW_BEGIN = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /></head><body bgcolor=\"#f6f6f6\">"; private static final String WEBVIEW_END = "</body></html>"; public static final int MENU_SELECT_A = 0; public static final int MENU_SELECT_B = 1; public static final int MENU_SELECT_C = 2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.item_detail); Intent intent = getIntent(); if (intent != null) { String tmp = ""; String desc = ""; TextView tv; tv = (TextView) findViewById(R.id.item_detail_title); tmp = intent.getStringExtra("TITLE"); tv.setText(tmp); tv = (TextView) findViewById(R.id.item_detail_pub); tmp = intent.getStringExtra("PUBDATE"); tv.setText(tmp); //tv = (TextView) findViewById(R.id.item_detail_descr); //tmp = intent.getStringExtra("DESCRIPTION"); //tv.setText(tmp); WebView wv = (WebView) findViewById(R.id.Des); wv.setWebViewClient(new WebViewClient(){}); wv.getSettings().setJavaScriptEnabled(true); wv.getSettings().setPluginState(PluginState.ON_DEMAND); wv.setVerticalScrollbarOverlay(true); wv.reload(); desc = WEBVIEW_BEGIN; tmp = intent.getStringExtra("Link"); tmp = intent.getStringExtra("DESCRIPTION"); desc += tmp + WEBVIEW_END; wv.loadDataWithBaseURL("about:blank", desc, "text/html", "utf-8", null); } } @Override public boolean onCreateOptionsMenu(Menu menu) { //getMenuInflater().inflate(R.menu.activity_main, menu); menu.add(0, MENU_SELECT_A, 0, "再読込み"); menu.add(0, MENU_SELECT_B, 0, "ヘルプ"); menu.add(0, MENU_SELECT_C, 0, "終了"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { WebView myWebView =(WebView)findViewById(R.id.Des); switch (item.getItemId()) { case MENU_SELECT_A: //再読み込みボタンが押されたときの処理 myWebView.reload(); return true; case MENU_SELECT_B: Toast.makeText(this, "ああああああ", Toast.LENGTH_LONG).show(); return true; case MENU_SELECT_C: //終了ボタンが押されたとき myWebView.clearCache(true); // キャッシュのクリア myWebView.clearHistory(); // 履歴のクリア finish(); } return false; } }

関連するQ&A