目指すアプリの形と、ここまで出来ていることを書きます。
javaでアンドロイドアプリ作成を目指しています。
前回の自分質問より継続した内容になります。
https://teratail.com/questions/262843
起動して(例)yahoo.co.jpを表示して、
yahoo.co.jp内では画面表示はそのまま、タイトルバーは無し。
yahoo.co.jp外に行くと、タイトルバーを表示する。
というもので、ここまで出来ています。
現在つまずきましたのが、戻るボタンを有効化して、無事戻るボタンを押すと戻るように設定できたのですが、
そこでyahoo.co.jpに戻ってきても
タイトルバーは表示されたままなので、
一旦進んで、戻ってきた際、バーは表示されてままでよいが、
最初のyahoo.co.jpサイト内まで戻ってきたら
タイトルバーを消したい、というのが今回の課題になります。
以下がMainActivity.javaです。
java
1public class MainActivity extends AppCompatActivity { 2 3 WebView myWebView; 4 5 @Override 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.activity_main); 9 10 11 myWebView = (WebView) findViewById(R.id.webview); 12 13 myWebView.getSettings().setJavaScriptEnabled(true); 14 myWebView.getSettings().setLoadWithOverviewMode(true); 15 16 17 myWebView.loadUrl("http://yahoo.co.jp"); 18 19 myWebView.setWebViewClient(new MyWebViewClient()); 20 ActionBar myAction = getSupportActionBar(); 21 myAction.hide(); 22 23 24 } 25 26 //// 27 private class MyWebViewClient extends WebViewClient { 28 @Override 29 public boolean shouldOverrideUrlLoading(WebView view, String url) { 30 if ("yahoo.co.jp".equals(Uri.parse(url).getHost())) { 31 32 ActionBar myAction = getSupportActionBar(); 33 myAction.hide(); 34 return false; 35 } 36 37 38 ActionBar myAction = getSupportActionBar(); 39 myAction.show(); 40 return false; 41 } 42 } 43 44 45 46 47 ////////ここが今回の質問場所 戻るボタンでの挙動です。 48 @Override 49 public void onBackPressed() { 50 if(myWebView!= null && myWebView.canGoBack()) { 51 52 53 ////////////★ActionBar myAction = getSupportActionBar(); 54 ////////////★myAction.hide(); 55 56 myWebView.goBack(); 57 58 } 59 else { 60 super.onBackPressed();//if there is no previous page, close app 61 } 62 } 63 64 65 66} 67
このMainActivity.javaの★マーク箇所ですが、
ここのコメントを外せば、myAction.hide();は確かに生きるのですが、
戻るボタンを押すたびにyahoo.co.jpだろうがそうでなかろうが、
一度押すたびにタイトルバーは消えます。
このコメントをこのままにしておくと、バーはhideされることはないので
戻るボタンを押して、押して、
結局、最初の設定の、 "yahoo.co.jp" に戻ってきても
バーは出現したままです。
つまり戻るボタンを押すたびに毎回タイトルバーは消えるか
戻るボタンを押してもずっと表示されたままか、
の2択であって、
条件、yahoo.co.jpドメインなら消す という事が達成できない状態です。
画面のURLを取得して、現在yahoo.co.jpだったら再度隠す、というようなプログラムを書けたら
バーを消せるのかな…と思うのですがいかがすればよいでしょうか。
試験で、 getUrl(); というのがあるというのを調べて、
★のあたりの箇所を
java
1if(myWebView!= null && myWebView.canGoBack()) { 2 3 String webUrl = myWebView.getUrl(); 4 5 if ("yahoo.co.jp".equals(Uri.parse(webUrl).getHost())) { 6 7 ActionBar myAction = getSupportActionBar(); 8 myAction.hide(); 9 } 10 11 12 myWebView.goBack(); 13 14 }
というように書いてみましたが、意味はありませんでした・・
なんとかお教え頂けたらと思うのですが、宜しくお願い致します・・。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/24 04:14
2020/05/24 14:26
2020/05/27 00:27
2020/05/27 00:50