2012-03-07 9 views
2

私は単純な電卓を書こうとしています。WebView.javaScriptEnable(true);アンドロイドのヌルポインタ例外エラー

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"); 
} 

} 

私はこのような別のActivityクラスからそのクラスを始めている:私はこのようになりますSimpleActivityクラスを持っている

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

私はVMのAndroid 2.3上でプロジェクトを実行しようとしています0.3私はこのエラーを取得:simpleActivityため

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 

私のxmlファイルは次のようになります。

<?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> 

多くのフォーラムでチュートリアルやスレッドを読んだが、まだ何も読んでいない。私は何を間違えているのですか?このライン上のログキャットウィンドウで

+1

新しいアクティビティ(.SimpleActivity)をマニフェストに追加しましたか? – Maxim

+1

奇妙に見えます。プロジェクト→クリーンを試してください。あなたのエディタで25行目は何ですか? –

+0

私は、以下のようにマニフェストにアクティビティを追加します: ' 'そしてプロブリエムを引き起こす行は次のとおりです: 'numer.getSettings().JavaScriptEnabled(true);' – MuzzY

答えて

1

の新しいTOCHをクリアするのを忘れていました。 SimpleActivityの私のレイアウトは、メインではなくシンプルです。メインレイアウトにはWebビューがありませんので、動作せず、NULLポインタ例外を返します。

0

ダブルクリック: 03-07 21:52:36.634:E/AndroidRuntime(411):org.muzzy.calc.SimpleActivity.onCreate(SimpleActivity.java:25)

これは問題の原因となるソース行に移動します。

さらに声明を忘れました wys = new StringBuilder();

そして、ほとんどのケースでは、単純なミスだったようにそれボタン

+0

回答ありがとうございます。私が質問を投稿したとき、私は非常に疲れていました。問題を引き起こす行は次のようであることを忘れていました: 'numer.getSettings()。setJavaScriptEnabled(true);' – MuzzY