2

やあみんな私は問題を抱えています。私は Android 開発の初心者で、Uni コースの現在の課題は単純な電卓を設計することです。家庭教師は、数値と演算子を追跡する 2 つのスタックを使用して電卓を自分で実装し、すべてを手動で行うことができると教えてくれました。

また

JavaScript で WebView オブジェクトを使用して、ユーザーが :P に入力したものを解決します。このチュートリアルを見つけました:

http://www.androiddom.com/2011/04/creating-android-calculator-tutorial.html

最初に問題を説明してから、コードを貼り付けます。基本的に、ButtonClickListener が機能していません。ボタンを押しても何も起こりません。WebView オブジェクトは何も起こっていないかのように空白のままです。JavaScriptを「true」に設定するチュートリアルの行を、Googleの公式Androidドキュメンタリーで見つけたものに変更し、アプリケーションを実行すると、ボタンを押すとすぐにクラッシュします。ボタンはブロードキャストを送信していますが、私のコードはそれに対して何もしていません。ここでコード:

package edu.calpoly.android.lab1;

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

public class MainActivity extends Activity {    
    private WebView mWebView;   
    private StringBuilder mMathString;  
    private ButtonClickListener mClickListener;

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

         // Create the math string      
         mMathString = new StringBuilder();

         // Enable javascript for the view      
         mWebView = (WebView) findViewById(R.id.webview);
         mWebView.getSettings().setJavaScriptEnabled(true);

         // Set the listener for all the buttons        
         mClickListener = new ButtonClickListener();        
         int idList[] = { R.id.button0, R.id.button1, R.id.button2,
                R.id.button3, R.id.button4, R.id.button5, R.id.button6,
                R.id.button7, R.id.button8, R.id.button9, R.id.buttonLeftParen,
                R.id.buttonRightParen, R.id.buttonPlus, R.id.buttonPlus,
                R.id.buttonMinus, R.id.buttonDivide, R.id.buttonTimes,
                R.id.buttonDecimal, R.id.buttonBackspace, R.id.buttonClear };

        for (int id : idList){ 
            View v = findViewById(id); 
            v.setOnClickListener(mClickListener);       
        }

    }

    private void updateWebView() {
        StringBuilder builder = new StringBuilder();
        builder.append("<html><body>");
        builder.append("<script type=\"text/javascript\">document.write('");
        builder.append(mMathString.toString());
        builder.append("');"); 
        builder.append("document.write('<br />=' + eval(\"");
        builder.append(mMathString.toString()); 
        builder.append("\"));</script>"); 
        builder.append("</body></html>");

        mWebView.loadData(builder.toString(), "application/xhtml", "UTF-8");    
    }

    private class ButtonClickListener implements OnClickListener {
        @Override 
        public void onClick(View v) {           
            switch (v.getId()) { 
                case R.id.buttonBackspace:
                    if (mMathString.length() > 0)
                        mMathString.deleteCharAt(mMathString.length() - 1);
                    break;          
                case R.id.buttonClear:
                    if (mMathString.length() > 0)
                        mMathString.delete(0, mMathString.length());
                    break;          
                default:
                    mMathString.append(((Button) v).getText());             
            }

            updateWebView();        
        }    
    } 
}

そして 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" />

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/buttonLeftParen"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="(" >
        </Button>

        <Button
            android:id="@+id/buttonRightParen"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text=")" >
        </Button>

        <Button
            android:id="@+id/buttonBackspace"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="B" >
        </Button>

        <Button
            android:id="@+id/buttonClear"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="C" >
        </Button>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button7"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="7" >
        </Button>

        <Button
            android:id="@+id/button8"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="8" >
        </Button>

        <Button
            android:id="@+id/button9"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="9" >
        </Button>

        <Button
            android:id="@+id/buttonPlus"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="+" >
        </Button>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button4"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="4" >
        </Button>

        <Button
            android:id="@+id/button5"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="5" >
        </Button>

        <Button
            android:id="@+id/button6"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="6" >
        </Button>

        <Button
            android:id="@+id/buttonMinus"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="-" >
        </Button>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout4"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="1" >
        </Button>

        <Button
            android:id="@+id/button2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="2" >
        </Button>

        <Button
            android:id="@+id/button3"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="3" >
        </Button>

        <Button
            android:id="@+id/buttonTimes"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="*" >
        </Button>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout5"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button0"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="0" >
        </Button>

        <Button
            android:id="@+id/buttonDecimal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="." >
        </Button>

        <Button
            android:id="@+id/buttonEquals"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="=" >
        </Button>

        <Button
            android:id="@+id/buttonDivide"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="/" >
        </Button>
    </LinearLayout>

</LinearLayout>

^ レイアウトはかなり退屈です。念のため投稿したかっただけです。さっそくありがとうございます!

4

0 に答える 0