Androidのプログラミング – 投稿 6: 建設実践電卓アプリ
みなさん、こんにちは, で 2 すべてのインターフェイスのデザインは、その後比較的多い私たちが集まってきた前に. 少しストレスを軽減してくつろぐために、この記事では、完全なアプリケーションの電卓を作るためにご案内します.
[qads]
私たちは前夜設計されたコード・インターフェースを使用します。.
ああ忘れ, あなたはすぐに計算することができ、このアプリで行うにはメッセージが表示され、および多くの努力を取ることはありません, 我々が使用されます ライブラリバラン 彼らが構築しています. あなた ここbalan.jarファイルのダウンロード. 形状などの次のプロジェクトモードを開き、フォルダbalan.jarアプリにファイルをコピー/ libsに
次に、選択したファイルを右クリックしbalan.jar ライブラリに追加… メニューの一番下の近く, あなたはすべてのアプリは大丈夫心配されるモジュールに追加したい場合はシステムが求められます. 待っ分同期システムを終了します.
今、あなたは、フォルダ内のファイルを開くActivityMain.java アプリ/ srcに/メイン/ javaの/{パッケージ名} アウト. 現在、顎 setContentView私たちのdrrdfの遺跡 R.layout.activity_main, あなたはそれを変更します R.layout.layout_calculator あなたは一日前に設計した電卓インターフェイスのファイルに接続するには.
package com.nguyenvanquan7826.tut5linearlayout; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_calculator); } }
[OK]を, 今本当にオフライン開始.
最初の, コンピュータで動作することができるように、, 我々は、対応する変数を介してJavaコードとのインタフェースの要素を接続する必要があります.
package com.nguyenvanquan7826.tut5linearlayout; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private TextView tvMath; private TextView tvResult; private int[] idButton = { R.id.btn0, R.id.btn1, R.id.btn2, R.id.btn3, R.id.btn4, R.id.btn5, R.id.btn6, R.id.btn7, R.id.btn8, R.id.btn9, R.id.btnDot, R.id.btnResult, R.id.btnPlus, R.id.btnSub, R.id.btnMul, R.id.btnDiv, R.id.btnC, R.id.btnOpen, R.id.btnClose }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_calculator); connectView(); } private void connectView() { tvMath = (TextView) findViewById(R.id.tvMath); tvResult = (TextView) findViewById(R.id.tvResult); for (int i = 0; i < idButton.length; i++) { findViewById(idButton[i]).setOnClickListener(this); } } @Override public void onClick(View view) { } }
あなたは、接続上のコードに気付き、結果しているTextViewには、通常の数学であります, ボタンは、個人が正常でない接続します. 私が実現した理由は、接続して、彼らは両方必要イベントを開始するので、多くのボタンがあります. そう考えは、同じ作業を繰り返し、データループに入ることができるようになります? そこで、彼らはアレイに自分のIDを持っています idButton. ビューごとに実質的なIDは、システム内の整数型に変換され、, タイプのように、この配列 int型. また、異なるにも接続して、ループ内の各ボタンのイベントを開始します. 私達はちょうど、コマンドのチェーンを介してすぐにイベントをキャプチャした接続ボタンをキャストしないでください findViewById(idButton[で]).setOnClickListener(この);
その理由は、関数ということです findViewById 私たちにビューをもたらします (それ以来、通常我々はボタンのように、その真のスタイルに押され, のTextView,…) Clickイベントをキャッチすることができますビュー機能あたり (TextViewに含みます, EditTextの,…) 我々は即時のために呼び出す必要があります setOnClickListener [ボタン上のキャストなし.
今、次のタスクは、ボタンのクリックイベントを処理しています. ここでは、やって分割しました 3 ボタンの種類: ボタン番号, ボタンボタンハンドル数学と数学.
ボタンの数やボタン操作、任意のボタンをクリックします, 私たちはただの表現に対応するテキストを追加します. ボタン長いハンドル (ボタンCのVAボタン= ) その後、計算を実行したり、画面をクリア. あなたがすることによってボタンをクリックすると、, 我々は、元に追加したライブラリーバランバラン内のオブジェクトのvalueMath呼び出します, それは私たちの結果を得るためにカウントされます.
package com.nguyenvanquan7826.tut5linearlayout; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; import cachhoc.net.Balan; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private TextView tvMath; private TextView tvResult; private int[] idButton = { R.id.btn0, R.id.btn1, R.id.btn2, R.id.btn3, R.id.btn4, R.id.btn5, R.id.btn6, R.id.btn7, R.id.btn8, R.id.btn9, R.id.btnDot, R.id.btnPlus, R.id.btnSub, R.id.btnMul, R.id.btnDiv, R.id.btnOpen, R.id.btnClose, R.id.btnC, R.id.btnResult }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_calculator); connectView(); } private void connectView() { tvMath = (TextView) findViewById(R.id.tvMath); tvResult = (TextView) findViewById(R.id.tvResult); for (int i = 0; i < idButton.length; i++) { findViewById(idButton[i]).setOnClickListener(this); } init(); } private void init() { tvMath.setText("|"); tvResult.setText("0"); } @Override public void onClick(View view) { int id = view.getId(); // check button number and button operator for (int i = 0; i < idButton.length - 2; i++) { if (id == idButton[i]) { String text = ((Button) findViewById(id)).getText().toString(); // clear char | on top if (tvMath.getText().toString().trim().equals("|")) { tvMath.setText(""); } tvMath.append(text); return; } } // clear screen if (id == R.id.btnC) { init(); return; } // calculation if (id == R.id.btnResult) { cal(); } } private void cal() { String math = tvMath.getText().toString().trim(); if (math.length() > 0) { Balan balan = new Balan(); String result = balan.valueMath(math) + ""; String error = balan.getError(); // check error if (error != null) { tvResult.setText(error); } else { // show result tvResult.setText(result); } } } }
それでおしまい, ここでの我々の結果は、オフライン.
最愛の日焼けハンドル先生のTN COS罪にキーが存在する場合
ライブラリは、正弦を計算することができDJK(X), とともに(X), そう(X). あなただけの通常の書き込み.
密閉されたときに彼の兄弟 ) = thi`アプリとプレス金型機器 , どのように徐LYを知りません
:ザ·
日焼けk個のA cosの罪のために独自のアルゴリズムを必要とします!スターがkを持っています
ライブラリーでは、すでに何それを働いてきました.
あなたはレイアウトするとき、彼はCAI TAOをOI(土地) ちょうど彼のポストのための風景のビューに再設計、アプリが強制終了し、このエラーになります , 私は先生を修正する方法をお願いしたいです
08-01 01:13:12.811 15250-15250/com.example.dell.calculator E / AndroidRuntime: 致命的な例外: メイン
プロセス: com.example.dell.calculator, PID: 15250
java.lang.RuntimeException: 活動ComponentInfoを開始することができません。{com.example.dell.calculator / com.example.dell.calculator.MainActivity}: java.lang.NullPointerException
android.app.ActivityThread.performLaunchActivityで(ActivityThread.java:2338)
android.app.ActivityThread.handleLaunchActivityで(ActivityThread.java:2390)
android.app.ActivityThread.handleRelaunchActivityで(ActivityThread.java:3930)
android.app.ActivityThread.access $ 900(ActivityThread.java:151)
android.app.ActivityThread $ H.handleMessageで(ActivityThread.java:1327)
android.os.Handler.dispatchMessageで(Handler.java:110)
android.os.Looper.loopで(Looper.java:193)
android.app.ActivityThread.mainで(ActivityThread.java:5292)
java.lang.reflect.Method.invokeNativeで(ネイティブメソッド)
java.lang.reflect.Method.invokeで(Method.java:515)
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.runで(ZygoteInit.java:824)
com.android.internal.os.ZygoteInit.mainで(ZygoteInit.java:640)
dalvik.system.NativeStart.mainで(ネイティブメソッド)
のせいで: java.lang.NullPointerException
com.example.dell.calculator.MainActivity.connectViewで(MainActivity.java:42)
com.example.dell.calculator.MainActivity.onCreateで(MainActivity.java:34)
android.app.Activity.performCreateで(Activity.java:5264)
android.app.Instrumentation.callActivityOnCreateで(Instrumentation.java:1088)
android.app.ActivityThread.performLaunchActivityで(ActivityThread.java:2302)
android.app.ActivityThread.handleLaunchActivityで(ActivityThread.java:2390)
android.app.ActivityThread.handleRelaunchActivityで(ActivityThread.java:3930)
android.app.ActivityThread.access $ 900(ActivityThread.java:151)
android.app.ActivityThread $ H.handleMessageで(ActivityThread.java:1327)
android.os.Handler.dispatchMessageで(Handler.java:110)
android.os.Looper.loopで(Looper.java:193)
android.app.ActivityThread.mainで(ActivityThread.java:5292)
java.lang.reflect.Method.invokeNativeで(ネイティブメソッド)
java.lang.reflect.Method.invokeで(Method.java:515)
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.runで(ZygoteInit.java:824)
com.android.internal.os.ZygoteInit.mainで(ZygoteInit.java:640)
dalvik.system.NativeStart.mainで(ネイティブメソッド)
代わりにオフラインで修正するために画面をリダイレクトするイベントをキャッチしよう.
あなたの先生ぇありがとうございました
彼は新しいを追加するために私に尋ねました, 確かに間違った先生だったように私は、コンピュータを入力していない人々をキャッチしたいです, などの二つ以上の兆候を入力しません . で 1 数, 括弧を開く前に、閉じられていないかっこ, 番号0で割ることはありません… 彼らは先生を行います
だから、onTextChange EditTextのためにこの事とイベントを使用する必要がすることはオフラインです.
あなたのLIBSをライブラリまたは作成する利用可能な広告です
あなたのZIPのPESに私の友人を共有します.
メール: nguyenngocluh14@gmail.com
すべてのコードでは、常にNHE. すべてのインタフェースコード 5, 頭を右に見えるが、すべての検出されました 5.
障害部位OI fは平方根を計算します 2 と %.
– あなたが入力した場合は、そのような気づくでしょう√4 “文字列の入力の数学”
– そして、押す場合 50% 文字 % ないのTextViewに追加し、厳密に一人で他の一つだけで押圧.
それでは、どのよう怖い先生の故障, 説明を期待します.
Eのおかげ!
アパート 4 彼らは正しいされている場所.
ああ、私はファイルを聞いてみようと、balan.jarハァッファイルbalan.javaです ?
.jarファイルをビルドです, .Javaソースファイルであります.
ハニー、このエラーとは何か、そしてそれを修正する方法を尋ねてもいいですか
“℃:\Program Files Android Android Studio jre bin java.exe” -agentlib:jdwp = transport = dt_socket,アドレス= 127.0.0.1:54743,suspend = y,server = n -javaagent:℃:\Users Admin .AndroidStudio4.0 system groovyHotSwap gragent.jar -javaagent:℃:\Users Admin .AndroidStudio4.0 system captionAgent debugger-agent.jar -Dfile.encoding = windows-1252 -classpath “℃:\Program Files Android Android Studio lib idea_rt.jar” -瓶C:\Users Admin AndroidStudioProjects android_co_ban app libs balan.jar
ターゲットVMに接続されています, 住所: ‘127.0.0.1:54743', 輸送: 'ソケット’
主なマニフェスト属性はありません, Cで:\Users Admin AndroidStudioProjects android_co_ban app libs balan.jar
ターゲットVMから切断されました, 住所: ‘127.0.0.1:54743', 輸送: 'ソケット’
プロセスは終了コードで終了しました 1
デバッグすることはできますが、もう1つはソケット関連のレポートが表示されます