2017-09-06 19 views
1

ロボティクスチーム向けのアプリケーションを作成して、いくつかの重要なウェブサイトをすばやく参照できます。私が抱えている問題は、(アプリケーションから終了するまで)戻るボタンを使用してフラグメントの1つをナビゲートすることができますが、「delphiFragment」というタイトルの他のフラグメントは、Webサイトを後方にナビゲートできません。ナビゲーションは1つのwebviewでしかできません - Androidスタジオ

私が提供できる他の情報がある場合は、そう言います。ここで

はMainActivityで

答えて

0

あなたは3つのフラグメントを追加している他のWebViewの断片とほぼ同じです私のdelphiFragmentクラス

package com.thirdspare.android.ckcyberpackapp; 

import android.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

import static com.thirdspare.android.ckcyberpackapp.MainActivity.mWebView; 


public class DelphiFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup parentViewGroup, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.frag_delphi, parentViewGroup, false); 
     mWebView = (WebView)view.findViewById(R.id.wbvCD); 
     // Enable Javascript 
     WebSettings webSettings = mWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     mWebView.setWebViewClient(new WebViewClient()); 
     mWebView.loadUrl("https://www.chiefdelphi.com/forums/portal.php"); 
     return view; 



    } 
} 

私の主な活動

package com.thirdspare.android.ckcyberpackapp; 

import android.app.Fragment; 
import android.app.FragmentTransaction; 
import android.os.Bundle; 
import android.support.annotation.NonNull; 
import android.support.design.widget.BottomNavigationView; 
import android.support.v7.app.AppCompatActivity; 
import android.view.KeyEvent; 
import android.view.MenuItem; 
import android.webkit.WebView; 
import android.widget.TextView; 

import static com.thirdspare.android.ckcyberpackapp.R.id.container; 


public class MainActivity extends AppCompatActivity { 
    Fragment homeFragment = new HomeFragment(); 
    Fragment delphiFragment = new DelphiFragment(); 
    Fragment tbaFragment = new TBAFragment(); 
    private TextView mTextMessage; 
    public static WebView mWebView; 


    private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener 
      = new BottomNavigationView.OnNavigationItemSelectedListener() { 

     @Override 
     public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
      switch (item.getItemId()) { 
       case R.id.navigation_home: 
        mTextMessage.setText(R.string.title_home); 
        getFragmentManager().beginTransaction() 
        .show(homeFragment) 
        .commit(); 
        return true; 
       case R.id.navigation_delphi: 
        // mTextMessage.setText(R.string.title_delphi); 
        getFragmentManager().beginTransaction() 
          .show(delphiFragment) 
          .hide(homeFragment) 
          .hide(tbaFragment) 
          .commit(); 

        return true; 
       case R.id.navigation_TBA: 
        mTextMessage.setText(R.string.title_tba); 
        getFragmentManager().beginTransaction() 
          .show(tbaFragment) 
          .hide(homeFragment) 
          .hide(delphiFragment) 
          .commit(); 
        return true; 
      } 
      return false; 
     } 

    }; 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     // Check if the key event was the Back button and if there's history 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
      mWebView.goBack(); 
      return true; 
     } 
     // If it wasn't the Back key or there's no web page history, bubble up to the default 
     // system behavior (probably exit the activity) 
     return super.onKeyDown(keyCode, event); 
    } 

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



     mTextMessage = (TextView) findViewById(R.id.message); 
     BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation); 
     navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); 

     if (savedInstanceState == null) { 
      FragmentTransaction ft = getFragmentManager().beginTransaction(); 
      ft.add(container, homeFragment); 
      ft.add(container, delphiFragment); 
      ft.add(container, tbaFragment); 
      ft.hide(delphiFragment); 
      ft.hide(tbaFragment); 
      ft.commit(); 
     } 
    } 




} 

され、ここで、 2つの他の断片を隠す。後であなたの隠された断片を見せてください。私の理解に基づいて、hideはウィンドウからフラグメントビューを無効にしますが、ライフサイクルの実行状態にあります。そのため、静的なmWebviewには、常にフラグメントの文字列が1つしかありません。mWebviewは選択に基づいて変更されませんでした。

+0

フラグメントを表示するときに、静的mWebviewにフラグメントの1つのwebviewの値を与えることをお勧めしますか?あるいは、私は何か他のことをしていると言っていますか? – Auti

+0

はい、mWebviewにはアプリケーション全体で1つのフラグメントがあり、使用された選択では変更されませんでした。 – VNY

関連する問題