Cannot Resolve Symbol...

  • Antworten:11
Rexxar
  • Forum-Beiträge: 2.563

07.11.2014, 11:47:59 via App

Sicher ist es eine ganz einfache Sache, aber egal was man tut, immer hat Android Studio was zu meckern. Programmiert habe ich bisher nur mit Visual Studio und Adventure Game Studio. Nundenn, ich habe eine WebView namens mWebView, doch immer wenn man im Code etwas damit machen will, wird es rot und es kommt "Cannot Resolve Symbol "mWebView"
Man soll laut irgendwelchen Tuturials auch "mWebView=(WebView) findViewbyId(r.id.activity_main_WebView); schreiben, doch da wird immer activity_Main_WebView rot und wenn man es in den Namen der Activity ändert passiert auch nichts. :(
Kann jemand helfen?

Liebe Grüße, Rexxar :)
Moto Z Play Stock
Nvidia Shield Tablet K1
http://www.androidpit.de/forum/634540/allgemeines-faq-fuer-neulinge

Antworten
pepperonas
  • Forum-Beiträge: 434

07.11.2014, 14:24:34 via Website

Hallo Rexxar,
wenn der obige Code so zum Einsatz kommt, liegt der Fehler darin, dass die Ressourcen-Klasse eine Klasse ist und Klassen nach Konvention immer groß geschreiben werden. :)
Dementsprechend sieht der Code dann so aus:

mWebView = (WebView) findViewbyId(R.id.activity_main_WebView);

PS: die Konvention Member mit einem kleinen m zu versehen ist zwar keine Pflicht, aber immerhin sinnvoll. Also weiter so. ;)

Open Source

Antworten
Rexxar
  • Forum-Beiträge: 2.563

07.11.2014, 14:46:44 via App

Danke für die Antworten, das probiere ich nachher mal aus. Das mit dem kleinen m wurde in den Anleitungen benutzt, erst hatte ich die WebView anders benannt aber um sicher zu gehen, habe ich sie so benannt, wie es empfohlen wurde.

Nun denn, ich musste
WebView mWebView = (WebView) findViewbyId(R.id.activity_main_mWebView)
schreiben. Jetzt funktioniert es, aber die WebView lädt keine Website, da steht immer ERR_CACHE_MISS.
Außerdem habe ich ein Textfeld, ich möchte, das bei Tipp die Tastatur erscheint, was garnicht passiert. Könnt ihr mir da helfen?

— geändert am 07.11.2014, 15:30:05

Liebe Grüße, Rexxar :)
Moto Z Play Stock
Nvidia Shield Tablet K1
http://www.androidpit.de/forum/634540/allgemeines-faq-fuer-neulinge

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

07.11.2014, 15:39:16 via Website

Hallo,
bittte beschreibe dein Vorhaben genauer und zeig uns etwas mehr von deinem Code.

LG Pascal

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
pepperonas
  • Forum-Beiträge: 434

07.11.2014, 15:43:28 via Website

Das hier sollte dir helfen..
Noch ein kleiner Tipp: Wenn du die Fragen auf englisch googlest und "stackoverflow" dazu schreibst, bekommst du oft sehr gute Lösungen. Jedenfalls ist das meine Erfahrung. Mit der Zeit kommt man auch ein bisschen dahinter nach was man suchen muss. :)

Open Source

Antworten
Rexxar
  • Forum-Beiträge: 2.563

07.11.2014, 16:29:09 via Website

Erstmal danke für eure Hilfe, hier kommt der Code:
...
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import android.widget.EditText;

    public class MainActivity extends Activity {

   @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final Activity activity = this;
    WebView mWebView = (WebView) findViewById(R.id.mWebView);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    mWebView.getSettings().setBlockNetworkImage(false);
    mWebView.getSettings().setDisplayZoomControls(true);
    mWebView.loadUrl("http://www.google.com");
}

...
Der Rest wurde von mir nicht verändert und ist noch wie er beim erstellen war. Ich möchte gerne einen Browser entwickeln, bei dem die Adressleiste unten liegt und im Moment gibt es nur die Adressleiste und die Webview sowie einen OK Button. Später soll das noch verbessert werden.

Liebe Grüße, Rexxar :)
Moto Z Play Stock
Nvidia Shield Tablet K1
http://www.androidpit.de/forum/634540/allgemeines-faq-fuer-neulinge

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

07.11.2014, 16:30:54 via Website

Hast du die Internet Permission gesetzt?
Der Code sieht bisher in Ordung aus.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
pepperonas
  • Forum-Beiträge: 434

07.11.2014, 17:45:00 via Website

Daran wirds auch liegen. Was mir allerdings auffällt ist, dass mWebView ein Memeber sein soll, aber in onCreate deklariert (bzw. initialisiert) wird. Entweder ist das Lehrbuch schlecht, oder es wurde sich nicht an den Inhalt gehalten :) aber so macht die Namensgebung eigentlich keinen Sinn^^

Wahrscheinlich wirds auf so was in der Art hinauslaufen...

 public class MainActivity extends Activity {

       WebView mWebView;

       @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Activity activity = this;
        mWebView = (WebView) findViewById(R.id.mWebView);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        mWebView.getSettings().setBlockNetworkImage(false);
        mWebView.getSettings().setDisplayZoomControls(true);
        mWebView.loadUrl("http://www.google.com");
        }

           ...
}

— geändert am 07.11.2014, 17:49:42

Open Source

Antworten
Rexxar
  • Forum-Beiträge: 2.563

08.11.2014, 10:42:59 via App

So, die Internet-Berechtigung war an der falschen Stelle gesetzt. Im Manifest darf sie nicht innerhalb Application stehen. Kurze Frage: Gibt es einen Unterschied zwischen WebViewClient und WebChromeClient? Im Moment leitet die Webview immer in den Browser weiter.
Achja das mit dem kleinen m war aus irgendeiner Internet Anleitung..

— geändert am 08.11.2014, 10:44:02

Liebe Grüße, Rexxar :)
Moto Z Play Stock
Nvidia Shield Tablet K1
http://www.androidpit.de/forum/634540/allgemeines-faq-fuer-neulinge

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

08.11.2014, 11:23:51 via App

Also Google versucht in neueren AndroidVersionen die WebView durch einen WebChrome oder so ähnlich auszutauschen
Ich habe bisher nur den WeViewClient benutzt.
Das reicht erst mal quch.
Wenn die WebView an den Browser weiterleitet musst du einen WebView Client intitialisieren und dann bei shouldOverride Url ein return true reinmachen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Rexxar
  • Forum-Beiträge: 2.563

08.11.2014, 11:31:55 via Website

Das probier ich gleich aus. Mir ist noch was aufgefallen...
editTextadress.setShowSoftInputOnFocus
Der Befehl geht leider erst ab Lollipop :'(
Achja, edit: Das mit der Tastatur hab ich jetzt mit einem OnClickListener gelöst :D
EDIT 2: Nun werden Websites geladen, funktioniert bestens. Für alle, die den Code brauchen:
mWebView.setWebViewClient(new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
return false;
}
});

— geändert am 08.11.2014, 12:25:31

Liebe Grüße, Rexxar :)
Moto Z Play Stock
Nvidia Shield Tablet K1
http://www.androidpit.de/forum/634540/allgemeines-faq-fuer-neulinge

Antworten