2012-04-22 3 views
0

Я использую WebView для Android, поэтому мне не нужно программировать масштаб и прокрутку. У меня есть веб-страница, которую я хочу в папке с ресурсами, и вот мой код. Каждый раз, когда я запускаю эмулятор, я получаю ошибку, нет такого файла или каталога. Мой вопрос - что мне нужно изменить, чтобы это работало?Показать веб-страницу без использования мобильной связи

Просто обновил мою .java до этого, и теперь я получаю силу, когда нажимаю button1, а мой XML такой же, как показано ниже.

OK Я исправил эту последнюю часть, и теперь все, что происходит, я получаю пустой экран после открытия приложения.

package com.DS; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.webkit.WebView; 
import android.widget.Button; 

public class CheatMathActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 


final Button button1 = (Button) findViewById(R.id.button1); 
button1.setOnClickListener(new View.OnClickListener(){ 
    public void onClick(View v){ 

      WebView webView = (WebView) findViewById(R.id.webView); 
      webView.getSettings().setJavaScriptEnabled(true); 
      webView.getSettings().setBuiltInZoomControls(true); 
      webView.getSettings().setSupportZoom(true); 
      webView.loadUrl("file:///android_asset/stuffyoumustknowcoldforapcalc.htm"); 

    } }); 
} 

}  

Ok Вот мой XML, перед добавлением WebView я имел несколько из домашней деятельности, которая имела две кнопки и TextView, когда я добавить WebView все, что графический макет показывает, является серый экран, который говорит WebView в центре.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:layout_gravity="center" 
android:gravity="center_horizontal" 
android:orientation="vertical" 
android:background="#4876ff" > 
<Button 
    android:id="@+id/button1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_marginTop="90dp" 
    android:textColor="#0000ff" 
    android:text="AP Calculus" /> 
<Button 
    android:id="@+id/button2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/button1" 
    android:layout_marginTop="38dp" 
    android:text="More Coming Soon!" /> 
<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/button2" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="87dp" 
    android:textColor="#FFFAFA" 
    android:text="If you have any questions or want to report a bug, feel free to email      me at [email protected] 
        Thank you!" /> 
<TextView 
    android:id="@+id/titleView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="37dp" 
    android:gravity="center_vertical" 
    android:text="Welcome to Math Cheat Sheet!" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 
<WebView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/webView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 
</RelativeLayout> 

ответ

1

Разместите веб-представление на своем макете. и в своей активности загрузите свой html-ресурс, как это.

webView = (WebView) findViewById(R.id.webView1); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.getSettings().setBuiltInZoomControls(true); 
webView.getSettings().setSupportZoom(true); 
webView.loadUrl("file:///android_asset/stuffyoumustknowcoldforapcalc.htm"); 

И не забудьте положить файл stuffyoumustknowcoldforapcalc.htm в папку с именем assets.

package com.DS; 

import java.io.File; 

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.view.View; 
import android.widget.Button; 
import android.webkit.WebView; 

public class CheatMathActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    final Button button1 = (Button) findViewById(R.id.button1); 
    button1.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v){ 

       webView = (WebView) findViewById(R.id.webView1); 
       webView.getSettings().setJavaScriptEnabled(true); 
       webView.getSettings().setBuiltInZoomControls(true); 
       webView.getSettings().setSupportZoom(true); 
       webView.loadUrl("file:///android_asset/stuffyoumustknowcoldforapcalc.htm"); 

     } }); 
    } 


} 
+0

если поместить копию моего main.xml в вопросах, вы бы изменить его и показать мне, что вы имеете в виду, поставив WebView в? Я попытался это сделать, но у меня возникла проблема с просмотром веб-обозревателя, связанным с относительной компоновкой, которую я уже имел. – Easy

+0

Я отредактировал свой ответ, чтобы показать образец макета с webview. Если у вас проблемы с макетом, вы можете показать нам. –

+0

@ Легко изменить свой метод OnCreate в качестве моего отредактированного ответа. –

2

Ну, если вы используете Intent (как писал выше) новый экземпляр внешнего браузера отображает и загружает Uri набора в Intent вместо использования вашего собственной WebView. Чтобы достичь того, о чем вы просите, вы должны получить ссылку на WebView внутри вашего макета деятельности, а затем загрузить свою страницу. Кроме того, если вы хотите загрузить свою страницу из своей assets/ папки, вы должны использовать вместо нее AssetManager и метод WebView.loadData(). Ваш метод onCreate() должен выглядеть следующим образом:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // get a reference to the webview 
    final WebView wV = (WebView) findViewById(R.id.webview); 

    // get page content from assets/your_page.html as a String 
    InputStream is = getAssets().open("your_page.html"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
    StringBuffer sb = new StringBuffer(); 
    String line; 
    while((line=br.readLine())!=null){ 
    sb.append(line); 
    sb.append("\n"); 
    } 
    is.close(); 
    final String html = sb.toString(); 

    // get a reference to the button 
    Button button1 = (Button) findViewById(R.id.button1); 
    button1.setOnClickListener(new View.OnClickListener(){ 
    public void onClick(View v){ 

     // load html string into your WebView 
     wV.loadData(html, "text/html", "utf-8"); 
    } 
    }); 

} 
+0

Как бы начать это с нажатия кнопки вместо onCreate? – Easy

+0

Я только что отредактировал свой ответ в соответствии с вашим запросом. Надеюсь, поможет. –

+0

mr_archano Любая причина открытия и чтения файла? Все файлы в папке с ресурсами могут быть доступны напрямую, как я писал в своем ответе. –

Смежные вопросы