2017-10-12 6 views
0

Je suis en train d'apprendre le développement Android et j'ai terminé la première application (https://developer.android.com/training/basics/firstapp/index.html). Maintenant, j'ai ajouté un deuxième champ de texte et un second bouton. L'idée est que le texte que l'utilisateur va entrer dans le champ de texte sera utilisé comme une entrée dans un moteur de recherche Google.Android: application WebView simple

J'ai donc fait ce qui suit:

a modifié le AndroidManifest.xml pour ajouter l'autorisation <uses-permission android:name="android.permission.INTERNET" />.

modifié mon MainActivity.java ajouter un appel à ma nouvelle activité:

/** Called when the user taps the Search button */ 
    public void searchMessage(View view) { 
     Intent intent = new Intent(this, DisplaySearchActivity.class); 
     EditText editText = (EditText) findViewById(R.id.editText3); 
     String message = editText.getText().toString(); 
     intent.putExtra(EXTRA_MESSAGE, message); 
     startActivity(intent); 
    } 

Ensuite, créé une nouvelle activité qui a une WebView et, pour affiche maintenant juste la page principale de Google.com

public class DisplaySearchActivity extends AppCompatActivity { 

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

     // Get the Intent that started this activity and extract the string 
     Intent intent = getIntent(); 
     String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 

     WebView myWebView = (WebView) findViewById(R.id.webview); 
     myWebView.loadUrl("https://www.google.com"); 
    } 
} 

Enfin, mon activity_display_search.xml ressemble à ceci

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.myapplication.DisplaySearchActivity"> 

    <WebView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/webview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     /> 

</android.support.constraint.ConstraintLayout> 

Lorsque je clique sur le bouton Search, l'application m'amène à la recherche WebView, mais rien ne se passe. Qu'est-ce que j'oublie ici?

+0

'' https' pas http' – Ibrahim

+0

D'abord, il semble que vous ne faites rien avec la variable 'message' vous avez créé et passé à travers le' Intent' à votre message d'affichage, est-ce intentionnel? – Brian

+0

Merci d'avoir signalé cela. Cependant, il manque encore quelque chose, la page de l'application ne se charge toujours pas. –

Répondre

-1

Vous devez fournir un WebViewClient pour votre WebView et activer JavaScript.

public class DisplaySearchActivity extends AppCompatActivity { 

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

    // Get the Intent that started this activity and extract the string 
    Intent intent = getIntent(); 
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 

    WebView myWebView = (WebView) findViewById(R.id.webview); 
    myWebView.setWebViewClient(new WebViewClient()); 
    //WebSettings webSettings = myWebView.getSettings(); 
    //webSettings.setJavaScriptEnabled(true); 
    myWebView.loadUrl("https://www.google.com/search?q=" + message); 
    } 
} 
+0

Merci Niels, je reçois toujours un écran vide, y a-t-il autre chose que je devrais faire en plus de ce que vous mentionnez? –

+0

En fait, la référence WebView ne nécessite pas la partie JS - https: //developer.android.com/guide/webapps/webview.html –