2014-01-19 5 views
1

Вот мой код, это буквально шаг за шагом от developer.android.comТост не работает в WebView

, и он просто не работает, независимо от того, сколько раз я запустить его.

public class MainActivity extends Activity { 

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


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


     WebSettings webSettings = myWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 


     myWebView.addJavascriptInterface(new WebAppInterface(this), "Android"); 
     myWebView.loadUrl("http://www.google.com"); 



    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    public class WebAppInterface { 
     Context mContext; 

     /** Instantiate the interface and set the context */ 
     WebAppInterface(Context c) { 
      mContext = c; 
     } 

     /** Show a toast from the web page */ 
     @JavascriptInterface 
     public void showToast(String toast) { 
      Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); 
     } 
    } 

} 

Когда я запускаю свое приложение, веб-страница загружается, тост никогда не отображается.

Я просто не могу найти проблему. Может ли кто-нибудь сказать мне, работает ли это для них?

EDIT: Вот еще кое-что, о чем я смущен. Сразу после этого даются инструкции:

Это создает интерфейс Android для JavaScript, запущенный в веб-обозревателе . На этом этапе ваше веб-приложение имеет доступ к классу WebAppInterface . Например, вот некоторые HTML и JavaScript , который создает сообщение тоста с помощью нового интерфейса, когда пользователь нажимает кнопку:

<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /> 

<script type="text/javascript"> 
    function showAndroidToast(toast) { 
     Android.showToast(toast); 
    } 
</script> 

Я понятия не имею, где эта часть JS кода идет либо ..

+1

Где код, который на самом деле вызывает 'showToast()'? – laalto

+0

Я думаю, вы неправильно читаете учебник. В нем говорится: «В этом примере класс WebAppInterface позволяет веб-странице создавать сообщение Toast с помощью метода showToast()». _ Попробуйте создать html-страницу и загрузить ее в свой веб-просмотр, как это сделано в руководство. –

+0

Это код на веб-сайте google? – user1940676

ответ

2

Я понятия не имею, где эта часть JS кода идет либо ..

Создать HTML-страницу в вашей папке активов, давайте скажем, с именем myWonderfulWebPage.html.

Скопируйте следующий HTML-код к ней:

<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /> 

<script type="text/javascript"> 
    function showAndroidToast(toast) { 
     Android.showToast(toast); 
    } 
</script> 

Как вы можете видеть, когда вы нажимаете кнопку, функция showAndroidToast будет называться и эта функция будет вызывать одну определенную в вашем Java код.

Теперь вернитесь в вашей деятельности и загрузить эту страницу в ваш WebView:

myWebView.loadUrl("file:///android_asset/myWonderfulWebPage.html"); 

Теперь вы увидите, что он показывает пустую страницу, с помощью кнопки. Нажмите на нее, и она покажет вам Toast на вашей веб-странице.

+0

Спасибо, что вложил много вещей в перспективу. –

1

Если код, который вы показываете, фактически используется, то, конечно, это не сработает.

myWebView.loadUrl("http://www.google.com"); 

Google.com не вызывает функцию JS вы добавили мост. Вы должны использовать свою собственную веб-страницу, которая действительно вызывает функцию, локальную или в Интернете.-.-

+0

Спасибо, я новичок в этом, извини, мой идиотизм. –

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