Bei onClick Webview ausführen, force close

  • Antworten:20
Gelöschter Account
  • Forum-Beiträge: 136

21.02.2011, 11:28:20 via Website

Hallo zusammen,

lese eine XML Datei aus und lasse sie anzeigen. Es wird ausgegeben der Titel und der Webseiten Link. An den Webseiten Link habe ich einen onClickListener gehängt, der bei klick hier im Beispiel auf google.de gehen soll.

Wenn ich nun auf den Link klicke, kommt allerdings ein Force Close. Könnt ihr mir helfen und sagen warum das so ist?

Hier der Codeteil:

[code]for (int i = 0; i < sitesList.getName().size(); i++) {
name[i] = new TextView(this);
name[i].setText("Titel = "+sitesList.getName().get(i));
website[i] = new TextView(this);
website[i].setText("Website = "+sitesList.getWebsite().get(i));
website[i].setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("http://www.google.de");
}
});

layout.addView(name[i]);
layout.addView(website[i]);
}[/code]

Liebe Grüße,
Malte

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

21.02.2011, 11:33:03 via Website

=> logcat

swordiApps Blog - Website

Antworten
Gelöschter Account
  • Forum-Beiträge: 136

21.02.2011, 11:33:50 via Website

Hab ich schon geschaut, leider kommt da bei mir nix gescheites...

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

21.02.2011, 11:35:12 via Website

aber ganz sicher kommt da was brauchbares

swordiApps Blog - Website

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

21.02.2011, 11:36:32 via Website

In deiner on click methode passiert ja nicht viel, ich tippe mal das er das WebView nicht findet:
mWebView = (WebView) findViewById(R.id.webview);

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Gelöschter Account
  • Forum-Beiträge: 136

21.02.2011, 11:37:25 via Website

Ich bin noch net wach :/ Sorry...

Hab irgentwie nach oben gescrollt...

02-21 10:24:41.185: ERROR/AndroidRuntime(281): java.lang.NullPointerException
02-21 10:24:41.185: ERROR/AndroidRuntime(281): at com.androidpeople.xml.parsing.XMLParsingExample$1.onClick(XMLParsingExample.java:76)
02-21 10:24:41.185: ERROR/AndroidRuntime(281): at android.view.View.performClick(View.java:2408)
02-21 10:24:41.185: ERROR/AndroidRuntime(281): at android.view.View$PerformClick.run(View.java:8816)
02-21 10:24:41.185: ERROR/AndroidRuntime(281): at android.os.Handler.handleCallback(Handler.java:587)
02-21 10:24:41.185: ERROR/AndroidRuntime(281): at android.os.Handler.dispatchMessage(Handler.java:92)
02-21 10:24:41.185: ERROR/AndroidRuntime(281): at android.os.Looper.loop(Looper.java:123)
02-21 10:24:41.185: ERROR/AndroidRuntime(281): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-21 10:24:41.185: ERROR/AndroidRuntime(281): at java.lang.reflect.Method.invokeNative(Native Method)
02-21 10:24:41.185: ERROR/AndroidRuntime(281): at java.lang.reflect.Method.invoke(Method.java:521)
02-21 10:24:41.185: ERROR/AndroidRuntime(281): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-21 10:24:41.185: ERROR/AndroidRuntime(281): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-21 10:24:41.185: ERROR/AndroidRuntime(281): at dalvik.system.NativeStart.main(Native Method)


Grüße,
Malte

Antworten
Gelöschter Account
  • Forum-Beiträge: 136

21.02.2011, 12:08:06 via Website

Puh,Puh,Puh...Ich raffs net...Habe jetzt ein paar Möglichkeiten ausprobiert, wo ich dachte, wo der Fehler sein könnte aber nix hat funktioniert...

Kriege ich einen Denkanstoss? Aber net die ganze Lösung verraten! ;)

Grüße,
Malte

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

21.02.2011, 12:27:55 via Website

Malte Heyenga
Puh,Puh,Puh...Ich raffs net...Habe jetzt ein paar Möglichkeiten ausprobiert, wo ich dachte, wo der Fehler sein könnte aber nix hat funktioniert...

Kriege ich einen Denkanstoss? Aber net die ganze Lösung verraten! ;)

Grüße,
Malte

hier gibts keine hellseher. deinen code solltest schon herzeigen

swordiApps Blog - Website

Antworten
Gelöschter Account
  • Forum-Beiträge: 136

21.02.2011, 12:29:28 via Website

Hatte ich doch schon oben gemacht oder reichte das net? Naja, egal, hier mal der komplette Code:

[code]package com.androidpeople.xml.parsing;

import java.net.URL;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class XMLParsingExample extends Activity {

/** Create Object For SiteList Class */
SitesList sitesList;
WebView mWebView;


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


/** Create a new layout to display the view */
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(1);

/** Create a new textview array to display the results */
TextView name[];
TextView website[];

try {

/** Handling XML */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();

/** Send URL to parse XML Tags */
URL sourceUrl = new URL(
"http://www.malte-heyenga.de/test.xml");

/** Create handler to handle XML Tags ( extends DefaultHandler ) */
MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));

} catch (Exception e) {
System.out.println("XML Pasing Excpetion = " + e);
}

/** Get result from MyXMLHandler SitlesList Object */
sitesList = MyXMLHandler.sitesList;

/** Assign textview array lenght by arraylist size */
name = new TextView[sitesList.getName().size()];
website = new TextView[sitesList.getName().size()];
/** Set the result text in textview and add it to layout */
for (int i = 0; i < sitesList.getName().size(); i++) {
name[i] = new TextView(this);
name[i].setText("Titel = "+sitesList.getName().get(i));
website[i] = new TextView(this);
website[i].setText("Website = "+sitesList.getWebsite().get(i));
website[i].setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("http://www.google.com");
}
});

layout.addView(name[i]);
layout.addView(website[i]);
}

/** Set the layout view to display */
setContentView(layout);
}
}[/code]

Grüße,
malte

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

21.02.2011, 12:36:24 via Website

zeile 76 ist nun welche?

swordiApps Blog - Website

Antworten
Gelöschter Account
  • Forum-Beiträge: 136

21.02.2011, 12:48:15 via Website

Das ist folgende:
1mWebView.getSettings().setJavaScriptEnabled(true);
Wenn ich nun aber die settings rausnehme, bleibt der selbe Fehler bei Zeile 67...

Also dann bei:
1mWebView.loadUrl("http://www.google.com");

Hier der ganze WebView Block:
1mWebView = (WebView) findViewById(R.id.webview);
2mWebView.getSettings().setJavaScriptEnabled(true);
3mWebView.loadUrl("http://www.google.com");

Grüße,
emha

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

21.02.2011, 12:54:56 via Website

Ja dann überleg doch mal...eine NullPointer fliegt immer dann wenn man versucht eine Methode an einem Objekt aufzurufen, das grade null ist.

Also wenn myObject.myMethod() eine NullPointer wirft, ist wohl myObject null.

Damit solltest du doch schon den Fehler finden.

— geändert am 21.02.2011, 12:55:27

Gelöschter Account

Antworten
Gelöschter Account
  • Forum-Beiträge: 136

21.02.2011, 14:50:21 via Website

Ja, dass habe ich verstanden, glaube ich zumindestens ;)

Ich glaube es liegt an dem "sitesList", war mir da aber net sicher, deswegen habe ich auch noch Sachen mit "website[i]" und dem "webview" ausprobiert doch ich komme einfach nicht drauf :( Diesmal schaffe ich es nicht alleine zu verstehen, sorry.

Kann mir wer die Lösung verraten? Ich weiß jetzt schon, dass wenn jemand mir die Lösung sagt, ich mir in den Arsch beißen werde...


Grüße,
malte

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

21.02.2011, 14:58:06 via Website

Vorsagen ist ja doof ;)

Überprüfe doch mal ob deine Object null sind indem du sie ausgibst, bevor du sie benutzt!

Log.d("whatever"," myObject isNull:"+myObject ==null):

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Gelöschter Account

Antworten
Gelöschter Account
  • Forum-Beiträge: 136

21.02.2011, 15:17:18 via Website

Der WebView ist der Übeltäter ;) Jetzt muss ich nur noch herausfinden, was ich dagegen mache :) Wieder ein Denkanstoss? ;)


Grüße,
Malte

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

21.02.2011, 15:20:17 via Website

Dann überlege mal was hier schiefläuft:

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

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Gelöschter Account

Antworten
Gelöschter Account
  • Forum-Beiträge: 136

21.02.2011, 15:33:06 via Website

AHHHHHHHHH :D Ich habs :D

mWebView = (WebView) findViewById(R.id.webview); saß zu tief :/ An solchen Kleinigkeiten sitzt man dann Ewigkeiten :/

Vielen vielen Dank an euch! Habe aber schon die nächste Frage, die ich dann bald in einem neuen Post veröffentlichen werde also freut euch! :)

Grüße,
Malte

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

21.02.2011, 15:40:51 via Website

Malte Heyenga
Vielen vielen Dank an euch! Habe aber schon die nächste Frage, die ich dann bald in einem neuen Post veröffentlichen werde also freut euch! :)
Oh Mann ! Das ist wie das "to be continued" am Ende des Films...musste das jetzt sein? Jetzt platzen wir vor Neugier :D

Antworten