2

I'm trying to write a simple calculator. I have a SimpleActivity class which looks like this:

package org.muzzy.calc;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.Button;

public class SimpleActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
private WebView numer;
private Button guzik;
private StringBuilder wys;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    numer = (WebView) findViewById(R.id.webview);
    numer.getSettings().setJavaScriptEnabled(true);
    numer.setWebChromeClient(new WebChromeClient());

    guzik = (Button) findViewById(R.id.button0);
    guzik.setOnClickListener(this);
    guzik = (Button) findViewById(R.id.button1);
    guzik.setOnClickListener(this);
    guzik = (Button) findViewById(R.id.button2);
    guzik.setOnClickListener(this);
    guzik = (Button) findViewById(R.id.button3);
    guzik.setOnClickListener(this);
    guzik = (Button) findViewById(R.id.button4);
    guzik.setOnClickListener(this);
    guzik = (Button) findViewById(R.id.button5);
    guzik.setOnClickListener(this);
    guzik = (Button) findViewById(R.id.button6);
    guzik.setOnClickListener(this);
    guzik = (Button) findViewById(R.id.button7);
    guzik.setOnClickListener(this);
    guzik = (Button) findViewById(R.id.button8);
    guzik.setOnClickListener(this);
    guzik = (Button) findViewById(R.id.button9);
    guzik.setOnClickListener(this);
    guzik = (Button) findViewById(R.id.plus);
    guzik.setOnClickListener(this);
    guzik = (Button) findViewById(R.id.minus);
    guzik.setOnClickListener(this);
    guzik = (Button) findViewById(R.id.multi);
    guzik.setOnClickListener(this);
    guzik = (Button) findViewById(R.id.divide);
    guzik.setOnClickListener(this);
    guzik = (Button) findViewById(R.id.leftP);
    guzik.setOnClickListener(this);
    guzik = (Button) findViewById(R.id.rightP);
    guzik.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    StringBuilder wyr = new StringBuilder();

    switch (v.getId()) {
    case R.id.bs:
        if (wyr.length() > 0)
            wyr.deleteCharAt(wyr.length() - 1);
        break;
    case R.id.ac:
        if (wyr.length() > 0)
            wyr.delete(0, wyr.length());
        break;
    default:
        wyr.append(((Button) v).getText());
    }

    wys.append("<html><body>");
    wys.append("<script type=\"text/javascript\">document.write('");
    wys.append(wyr.toString());
    wys.append("');");
    wys.append("document.write('<br />=' + eval(\"");
    wys.append(wyr.toString());
    wys.append("\"));</script>");
    wys.append("</body></html>");

    numer.loadData(wys.toString(), "application/xhtml", "UTF-8");
}

}

I'm starting that class from another Activity class like this:

Intent simpleIntent = new Intent(this, SimpleActivity.class);
            startActivity(simpleIntent);

When I'm trying to run the project on VM Android 2.3.3 I get this errors:

03-07 21:52:36.624: D/AndroidRuntime(411): Shutting down VM
03-07 21:52:36.624: W/dalvikvm(411): threadid=1: thread exiting with uncaught exception (group=0x40015560)
03-07 21:52:36.634: E/AndroidRuntime(411): FATAL EXCEPTION: main
03-07 21:52:36.634: E/AndroidRuntime(411): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.muzzy.calc/org.muzzy.calc.SimpleActivity}: java.lang.NullPointerException
03-07 21:52:36.634: E/AndroidRuntime(411):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
03-07 21:52:36.634: E/AndroidRuntime(411):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-07 21:52:36.634: E/AndroidRuntime(411):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-07 21:52:36.634: E/AndroidRuntime(411):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-07 21:52:36.634: E/AndroidRuntime(411):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-07 21:52:36.634: E/AndroidRuntime(411):  at android.os.Looper.loop(Looper.java:123)
03-07 21:52:36.634: E/AndroidRuntime(411):  at android.app.ActivityThread.main(ActivityThread.java:3683)
03-07 21:52:36.634: E/AndroidRuntime(411):  at java.lang.reflect.Method.invokeNative(Native Method)
03-07 21:52:36.634: E/AndroidRuntime(411):  at java.lang.reflect.Method.invoke(Method.java:507)
03-07 21:52:36.634: E/AndroidRuntime(411):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-07 21:52:36.634: E/AndroidRuntime(411):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-07 21:52:36.634: E/AndroidRuntime(411):  at dalvik.system.NativeStart.main(Native Method)
03-07 21:52:36.634: E/AndroidRuntime(411): Caused by: java.lang.NullPointerException
03-07 21:52:36.634: E/AndroidRuntime(411):  at org.muzzy.calc.SimpleActivity.onCreate(SimpleActivity.java:25)
03-07 21:52:36.634: E/AndroidRuntime(411):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-07 21:52:36.634: E/AndroidRuntime(411):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
03-07 21:52:36.634: E/AndroidRuntime(411):  ... 11 more

My xml file for simpleActivity looks like this:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<WebView
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="50dip"
    android:visibility="visible" />

<TableLayout
    android:id="@+id/tableLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stretchColumns="0,1,2,3" >

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button1"
            android:text="@string/b1" />

        <Button
            android:id="@+id/button2"
            android:text="@string/b2" />

        <Button
            android:id="@+id/button3"
            android:text="@string/b3" />

        <Button
            android:id="@+id/plus"
            android:text="@string/plus" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button4"
            android:text="@string/b4" />

        <Button
            android:id="@+id/button5"
            android:text="@string/b5" />

        <Button
            android:id="@+id/button6"
            android:text="@string/b6" />

        <Button
            android:id="@+id/minus"
            android:text="@string/minus" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button7"
            android:text="@string/b7" />

        <Button
            android:id="@+id/button8"
            android:text="@string/b8" />

        <Button
            android:id="@+id/button9"
            android:text="@string/b9" />

        <Button
            android:id="@+id/multi"
            android:text="@string/multi" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/leftP"
            android:text="@string/leftParen" />

        <Button
            android:id="@+id/button0"
            android:text="@string/b0" />

        <Button
            android:id="@+id/rightP"
            android:text="@string/rightParen" />

        <Button
            android:id="@+id/divide"
            android:text="@string/divide" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/bs"
            android:text="@string/backspace" />

        <Button
            android:id="@+id/dot"
            android:text="@string/dot" />

        <Button
            android:id="@+id/ac"
            android:text="@string/allclear" />

        <Button
            android:id="@+id/equals"
            android:text="@string/equals" />
    </TableRow>
</TableLayout>

</LinearLayout>

I read a bunch of tutorials and threads at lot of forums and still nothing. What am I doing wrong??

4
  • 1
    Did you add your new activity(.SimpleActivity) to the Manifest? Commented Mar 7, 2012 at 22:36
  • 1
    Seems weird. Try a project->clean. What is line 25 in your editor? Commented Mar 7, 2012 at 22:40
  • I add activity in Manifest like this: <activity android:name=".SimpleActivity" > </activity> and the line which causes the probliem is: numer.getSettings().setJavaScriptEnabled(true); Commented Mar 8, 2012 at 20:06
  • Cleaning project didn't work. Commented Mar 8, 2012 at 20:14

2 Answers 2

1

Like in most cases it was a simple mistake. My layout for SimpleActivity is not main but simple. There is no webview in the main layout so it doesn't work and return null pointer exception.

Sign up to request clarification or add additional context in comments.

Comments

0

Double click in the Log Cat window on this line: 03-07 21:52:36.634: E/AndroidRuntime(411): at org.muzzy.calc.SimpleActivity.onCreate(SimpleActivity.java:25)

That will bring you at the source line which causes the problem.

Further you forgot a statement wys = new StringBuilder();

And forgot to clear it a a new toch of a button

1 Comment

Thanks for answer. When I was posting my question I was very tired and i forgot to wrote that the line which causes the problem is: numer.getSettings().setJavaScriptEnabled(true);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.