Wie setzen webview-client?
Ich gesehen in der android-Dokumentation, wo Sie
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Behandeln, wenn Elemente angeklickt werden innerhalb einer webview.
Das einzige problem bei mir ist, dass ich die Einstellung der url in einer anderen Methode.
Den HelloWebViewClient überschreibt und nicht die url, die der Benutzer auswählen kann. Es ist einfach null zurück..Wie konnte ich die Fahrt über diese Methode zu verwenden, die url durch den Benutzer festgelegt?
Die URL wird geladen, wenn ich es in eine reguläre Methode, mit der WebView browser;
und dann browser.loadUrl(String url)
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.shopping);
findIT = (Button)findViewById(R.id.findIT);
edittext = (EditText)findViewById(R.id.item);
type = (RadioGroup)findViewById(R.id.console);
site = (RadioGroup)findViewById(R.id.shopping_group);
findIT.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
item = edittext.getText().toString();
lookUp();
}
});
}
public void lookUp(){
browser = (WebView) findViewById(R.id.shoppingBrowser);
browser.getSettings().setJavaScriptEnabled(true);
Log.v(item, item);
getUserPreference();
browser.setWebViewClient(new HelloWebViewClient());
browser.loadUrl(url);
}
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String notuse) {
Log.v("shopping", url+" loaded");
return true;
}
}
public void getUserPreference(){
switch(type.getCheckedRadioButtonId()){
case R.id.item:
console = "item";
break;
case R.id.PS3:
console = "item";
break;
case R.id.item:
console = "item";
break;
}Log.v("item", console);
switch(site.getCheckedRadioButtonId()){
case R.id.store:
url = "http://www.gamestop.com/browse?nav=16k- "+ item +" " + console;
break;
case R.id.store:
url = "http://www.google.com/search?q="+item + " " + console+"&tbm=shop&hl=en&aq=0&oq=where+";
break;
case R.id.store:
url = "http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dvideogames&field-keywords="+item + " "+ console+"&x=0&y=0";
Log.v("shopping", url);
}
}
}
Wenn Sie sehen, was im, der versucht zu tun, erhält der Benutzer wählen, welche Seite Sie Einkaufen möchten. und von dort habe ich es an die url an.
InformationsquelleAutor android_king22 | 2011-07-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn der Benutzer ist die Wahl der URL, die aus derselben Aktivität können Sie einfach die URL-Referenz aus dem member-variable anstatt die URL aus dem parameter:
Dieser erzählt die WebviewClient haben, dass Sie überlastet die URL zu laden (und in der Tat verursacht, laden Sie die URL, die Sie möchten, statt der url mitgeliefert).
Hier ist ein vollständiges Beispiel von etwas, das ich verspottet:
Hoffe, das hilft. Wenn dies für Sie funktioniert, bitte markieren Sie die Antwort als akzeptiert.
InformationsquelleAutor Jason
Es ist nicht klar, aus Ihrer Frage, ob dies der Fall ist, aber es ist möglich, dass Sie nicht die WebViewClient Ihrer Webansicht " aus, um die benutzerdefinierten Unterklasse, die Sie erstellt haben in Ihrem code. Irgendwo in deinem code solltest du so etwas wie:
Wenn Sie nur tun, mit diesem eine Instanz von WebView und Ihre änderungen an der WebViewClient sind einfache, dann würde ich vorschlagen, dass ein eleganter Weg, dies zu erreichen wäre die folgende:
Edit:
Ist es möglich, dass der WebViewClient ist tatsächlich ein red herring? Es scheint mir, dass es ein problem mit der switch-Anweisungen in getUserPreference(). Während der ersten switch-Anweisung unnötig erscheint, der zweite immer nur setzt die url, gamestop, weil alle Ihre Fälle sind die gleichen.
Schauen Sie auf Bearbeiten. Der Benutzer wählt die url, von der RadioGroup
Ich habe gerade bearbeitet meine Reaktion, um zu zeigen, was fehlt, aber es ist in der edit-queue, so dass ich werde versuchen zu erklären, auch hier: in shouldOverrideUrlLoading (), sollten Sie die folgenden Zeilen: Ansicht.loadUrl(url); // Dies ist die variable url return true;
Hilft es, wenn ich mein edit eigenen Antwort anstelle von jemand anderem. Sorry glorifiedHacker... nicht meine Absicht überhaupt.
InformationsquelleAutor glorifiedHacker
Legen Sie Ihre benutzerdefinierten
WebViewClient
für Ihre webview und laden Sie die url in webview als Sie vorher tun:Ich kann nicht verstehen, das Verhalten von deinem Kommentar. Mehr code und genauer zu sein in dem, was Sie versuchen zu erreichen, bitte.
Schau mein edit
InformationsquelleAutor Ovidiu Latcu