آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

FATAL EXCEPTION: main java.lang.RuntimeException

وحید  8 سال پیش  8 سال پیش
0 0

سلام.

من پک آموزشی آقای آقاجانی رو تازه شروع کردم.توی برنامه Calculator که همزمان با ویدیو پیش میرم همه کدها درست کار می کنه بغیر از کدهای مربوط به عملگرها (* / + - ). با وارد کردن کدها تو ایمولاتور پیغام Unfortunately, Calc has stoped رو میده و توی اندروید استودیو پیغام زیر رو:

09-07 14:13:38.010 1649-1649/com.example.me.calc E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.me.calc/com.example.me.calc.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.example.me.calc.MainActivity.onCreate(MainActivity.java:260)
at android.app.Activity.performCreate(Activity.java:5008)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
at android.app.ActivityThread.access$600(ActivityThread.java:130) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4745) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
at dalvik.system.NativeStart.main(Native Method) 

این هم کد من که عینا مثل کد خود آقای آقاجانیه مگر تو اسم متغیرها و ....

package com.example.me.calc;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
Button btn_ce;
Button btn_c;
Button btn_back;
Button btn_division;
Button btn_7;
Button btn_8;
Button btn_9;
Button btn_4;
Button btn_5;
Button btn_6;
Button btn_1;
Button btn_2;
Button btn_3;
Button btn_sign;
Button btn_0;
Button btn_point;
Button btn_equal;
Button btn_plus;
Button btn_minus;
Button btn_multiply;

TextView txt_result;
TextView txt_history;

float currentValue = 0;
String operand = "";
boolean mustReset = false;
void append(int num) {
if (mustReset) {
txt_result.setText("");
mustReset = false;
}

String oldValue = txt_result.getText().toString();

if (oldValue.length() > 9) return;

if (oldValue.equals("0"))
if (num == 0) {
return;
} else {
oldValue = "";
}
txt_result.setText(oldValue + num);
}

void operators(String nextOperand) {
String lastValue = txt_result.getText().toString();
Float lastResult = Float.parseFloat(lastValue);

if (operand.equals("+")) currentValue += lastResult;
else if (operand.equals("-")) currentValue -= lastResult;
else if (operand.equals("*")) currentValue *= lastResult;
else if (operand.equals("/")) currentValue /= lastResult;
else if (operand.equals("")) currentValue = lastResult;

String oldHistory = txt_history.getText().toString();
txt_history.setText(oldHistory + " " + lastResult + " " + nextOperand);
txt_result.setText("" + currentValue);
operand = nextOperand;
mustReset = true;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

txt_result = (TextView) findViewById(R.id.txt_result);
txt_history = (TextView) findViewById(R.id.txt_history);
btn_ce = (Button) findViewById(R.id.btn_ce);
btn_c = (Button) findViewById(R.id.btn_c);
btn_back = (Button) findViewById(R.id.btn_back);
btn_division = (Button) findViewById(R.id.btn_division);
btn_7 = (Button) findViewById(R.id.btn_7);
btn_8 = (Button) findViewById(R.id.btn_8);
btn_9 = (Button) findViewById(R.id.btn_9);
btn_4 = (Button) findViewById(R.id.btn_4);
btn_5 = (Button) findViewById(R.id.btn_5);
btn_6 = (Button) findViewById(R.id.btn_6);
btn_1 = (Button) findViewById(R.id.btn_1);
btn_2 = (Button) findViewById(R.id.btn_2);
btn_3 = (Button) findViewById(R.id.btn_3);
btn_sign = (Button) findViewById(R.id.btn_sign);
btn_0 = (Button) findViewById(R.id.btn_0);
btn_point = (Button) findViewById(R.id.btn_point);
btn_equal = (Button) findViewById(R.id.btn_equal);
btn_plus = (Button) findViewById(R.id.btn_plus);
btn_multiply = (Button) findViewById(R.id.btn_multiply);
View.OnClickListener numbersListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
int index = Integer.parseInt(v.getTag().toString());
append(index);
}
};

btn_0.setOnClickListener(numbersListener);
btn_1.setOnClickListener(numbersListener);
btn_2.setOnClickListener(numbersListener);
btn_3.setOnClickListener(numbersListener);
btn_4.setOnClickListener(numbersListener);
btn_5.setOnClickListener(numbersListener);
btn_6.setOnClickListener(numbersListener);
btn_7.setOnClickListener(numbersListener);
btn_8.setOnClickListener(numbersListener);
btn_9.setOnClickListener(numbersListener);
مشکل فقط همین قطعه کده که وقتی کامنتش میکنم بقیه کدها و دکمه ها درست کار می کنه:
View.OnClickListener operandListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
operators(view.getTag().toString());
}
};

btn_plus.setOnClickListener(operandListener);
btn_minus.setOnClickListener(operandListener);
btn_multiply.setOnClickListener(operandListener);
btn_division.setOnClickListener(operandListener);
}
}

 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .