2016-02-10 17 views
-1

我遇到了一个问题,我无法解决,我GOOGLE了很多,但找不到解决方案。如何在主详细信息/流中的另一个网页中加载一个HTML页面在Android中

我做了一个使用主要细节/流程的应用程序。这个应用程序打开一个网页,只要选择一个类别项目,但当我点击网页中的另一个链接,它会重定向到浏览器并打开浏览器中的链接。有没有办法打开应用程序本身的所有链接? 所有帮助非常感谢!我在这里完全没有想法。 谢谢。

WebpageDetailFragment.java

public class WebpageDetailFragment extends Fragment { 

    public static final String ARG_ITEM_ID = "item_id"; 

    private DummyContent.DummyItem mItem; 

    public WebpageDetailFragment() { 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     if (getArguments().containsKey(ARG_ITEM_ID)) { 
      mItem = DummyContent.ITEM_MAP.get(getArguments().getString(ARG_ITEM_ID)); 

      Activity activity = this.getActivity(); 
      CollapsingToolbarLayout appBarLayout = (CollapsingToolbarLayout) activity.findViewById(R.id.toolbar_layout); 
      if (appBarLayout != null) { 
       appBarLayout.setTitle(mItem.item_name); 
      } 
     } 
    } 



    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.webpage_detail, container, false); 

     // Show the dummy content as text in a TextView. 
     if (mItem != null) { 
      ((WebView) rootView.findViewById(R.id.detail_area)).loadUrl(mItem.url); 
     } 
     return rootView; 
    } 
} 

我还有一个问题,当我加入你的代码相同的页面在WebView中负载重定向到浏览器解决的问题,但它不加载所需的页面。在这里我的代码: -

DummyContent.java

public class DummyContent { 

    public static final List<DummyItem> ITEMS = new ArrayList<>(); 

    public static final Map<String, DummyItem> ITEM_MAP = new HashMap<>(); 

    static { 
     addItem(new DummyItem("1", "Home", "http://techonaclick.com/")); 
     addItem(new DummyItem("2", "About Us", "http://techonaclick.com/about-2/")); 
     addItem(new DummyItem("3", "Contact Us", "http://techonaclick.com/contact-us/")); 
     addItem(new DummyItem("4", "Disclaimer", "http://techonaclick.com/disclaimer/")); 
     addItem(new DummyItem("5", "Privacy Policy", "http://techonaclick.com/privacy-policy/")); 
    } 

    private static void addItem(DummyItem item) { 
     ITEMS.add(item); 
     ITEM_MAP.put(item.id, item); 
    } 

    public static class DummyItem { 
     public final String id; 
     public final String item_name; 
     public final String url; 

     public DummyItem(String id, String item_name, String url) { 
      this.id = id; 
      this.item_name = item_name; 
      this.url = url; 
     } 

     @Override 
     public String toString() { 
      return item_name; 
     } 
    } 
} 

The place where i inserted your code

回答

0

添加新WebViewClient()到您的主WebView处理的所有环节。

documentation

当用户点击网页视图从网页上的链接,则 默认行为是针对Android推出一个处理 网址的应用程序。通常,默认Web浏览器会打开并加载目标网址 。但是,您可以为WebView覆盖此行为,因此在您的WebView中打开 链接。然后,您可以允许用户通过其WebView维护的网页历史记录 向后和向前导航 。


例子:

myWebView.setWebViewClient(new WebViewClient() { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 
}); 

你的情况:

在任何地方添加这个片段您Fragment类中:

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    WebView webView = (WebView) view.getRootView().findViewById(R.id.detail_area); 
    webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 
    }); 
} 
+0

由于我使用主细节/流布局,我无法弄清楚在哪里添加此方法! –

+0

你能否在问题中粘贴你的代码?我会为你添加它。 –

相关问题