2011-06-21 67 views
0

我的应用必须显示存储在资产文件夹中的5个HTML页面,以及如何在单个webview中显示它们。Android在webview中加载存储在资产文件夹中的html页面

+0

通过在单个网页视图中显示五个页面,你是什么意思? 至于如何从资产文件夹实际加载页面,请参阅下面的答案。 –

+0

@StefanHållén看到我接受的答案,知道我的意思。 – Kishore

+0

投票的原因是什么?????? – Kishore

回答

2

我发现这一点,它是专门为Mr.Stefan哈伦(理解我的问题)

`

private WebView mWebView = null;  
    private TextView selectedText = null; 
    private long timeLeft; 
    private int pageIndex; 
    private String pagePath;  
    private String[] pageList; 
    private AssetManager assMan =null;  
    private String path="Courses/Section01"; 
    private int SelectedRow; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      setContentView(R.layout.course); 

      mWebView = (WebView) findViewById(R.id.webview); 

      assMan= this.getAssets(); 

      try { 
       pageList = aMan.list(path); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      pageIndex=0; 

      System.out.println(pageList[0]); 

      System.out.println(pageList.length); 

      pagePath=pageList[pageIndex]; 

      loadWebView(pagePath); 

      Button nextView = (Button) findViewById(R.id.nxt); 

         nextView.setOnClickListener(NextClick); 


     Button previousView = (Button) findViewById(R.id.pre); 
         previousView.setOnClickListener(PreviousClick); 
     } 

     View.OnClickListener PreviousClick = new View.OnClickListener() { 

      public void onClick(View v) { 
       GoPrevious(); 

      } 
     }; 
     View.OnClickListener NextClick = new View.OnClickListener() { 

       public void onClick(View v) { 
        GoNextNews(); 

       } 
      }; 
     private void loadWebView(String s){ 

      //mWebView.loadUrl(s); 

      mWebView.loadUrl("file:///android_asset/htmlFilesFolder/"+s); 

     } 


     private void GoNextNews() { 

      int TotalRows = pageList.length; 

      if ((SelectedRow + 1) < TotalRows) 
      { 
       SelectedRow = SelectedRow + 1; 

       String s=pageList[SelectedRow]; 

       loadWebView(s); 
       } 
     } 

     private void GoPrevious() { 

      if (SelectedRow > 0) 
      { 
       SelectedRow = SelectedRow - 1; 

       String s=pageList[SelectedRow]; 

       loadWebView(s); 

      } 
     } 
}` 
10
WebView webView = (WebView) findViewById(R.id.YourWebView); 
webView.loadUrl("file:///android_asset/your.html"); 
+0

我知道如何加载HTML页面,我的问题是如何显示“5 HTML页面”在“单一“网络视图。 – Kishore

3
<WebView 
    android:id="@+id/testWebView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">  
</WebView> 

然后创建的HTML页面导航湖这样的:

<body> 

<ul id="menu"> 
    <li><a href="page1.html" title="page 1">Page 1</a></li> 
    <li><a href="page2.html" title="page 2">Page 2</a></li> 
    <li><a href="page3.html" title="page 3">Page 3</a></li> 
    <li><a href="page4.html" title="page 4">Page 4</a></li> 
    <li><a href="page5.html" title="page 5">Page 5</a></li> 
</ul> 


<h1> page 1</h1> 
</body> 

然后加载第一页:

WebView webView = (WebView) findViewById(R.id.testWebView); 
webView.loadUrl("file:///android_asset/page1.html"); 

,所以你得到一个HTML页面导航到其他网页

+0

好吧,这是在HTML中,你知道如何做到这一点在Android中。 – Kishore

1

你实际上是在谈论SPA(单页应用程序),如果我没看错的。您应该看看Angularjs,它是一个具有proparty routeProvider的框架。您可以轻松加载您的html页面,这些页面实际上是您的主html页面中的部分。只需在波浪链接上给一些时间...哦,如果你在你的项目上添加phonegap,它也可以用于android和ios。

http://docs.angularjs.org/tutorial/step_07

http://docs.angularjs.org/tutorial

乐意帮助...

0

我建议你可以将HTML文件从资产到内部目录先复制(getFilesDir())。然后执行

webView.loadUrl(“file://”+ getFilesDir()+“/firstPage.html”);

因为直接从Assets中,某些设备会失败。

相关问题