بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

ارور ONCLICK در ماشین حساب

مدیریت گفتگو
آخرین تغییر: 9 سال پیش

دوستان من ماشین حساب رو طبق ویدیواستاد کد نویسی میکنم دکمه اعداد درست کار میکنه ولی دکمه های اوپرند کلیک که میشه وارد setText نمیشه و این ارور رو میده 

Caused by: java.lang.NullPointerException
at com.sarimatix.samira.calculator.MainActivity.onCreate(MainActivity.java:230)

 
 اینم کدهایی که نوشتم 
package com.sarimatix.samira.calculator;

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 {
TextView txtmini;
TextView txtresult;
Button btn0;
Button btn1;
Button btn2;
Button btn3;
Button btn4;
Button btn5;
Button btn6;
Button btn7;
Button btn8;
Button btn9;
Button btnplus;
Button btnmultiply;
Button btnmines;
Button btndivision;
Button btnpoint;
Button btnclean;
Button btncleanentity;
Button btnback;
Button btnsign;
Button btnequal;
boolean resetlcd = false;
double currentresult =0;
String operator="";


public void backOne(){
String back=txtresult.getText().toString();
String newBack=back.substring(0,back.length()-1);
txtresult.setText(newBack); }

public void point(){
if (resetlcd){
txtresult.setText("0");
resetlcd=false;}
String oldvalue =txtresult.getText().toString();
if (oldvalue.contains("."))
{return;}
if (oldvalue.length()>10)
{return; }
txtresult.setText(oldvalue + "."); }

public void compiute(String nextOperator){
String resultvalue =txtresult.getText().toString();
double resultnumber=Double.parseDouble(resultvalue);
if(operator.equals("+")){
currentresult += resultnumber;}
else if(operator.equals("-")){
currentresult -= resultnumber;}
else if(operator.equals("/")){
currentresult /= resultnumber;}
else if(operator.equals("*")){
currentresult *= resultnumber;}
else if(operator.equals("")){
currentresult = resultnumber;}
String oldresult=txtmini.getText().toString();
txtmini.setText(oldresult+resultnumber+nextOperator);
txtresult.setText("" + currentresult);
operator=nextOperator;
resetlcd = true; }

public void prosessEqual() {
compiute("");
txtmini.setText(""); }

public void appendOperator(String nextOperator){
compiute(nextOperator);}


public void appendNumber(int number){
String oldvalue =txtresult.getText().toString();
if (resetlcd){
oldvalue ="";
resetlcd=false;}
if(oldvalue.equals("0")){
if (number==0)
{return; }
oldvalue ="";}
if (oldvalue.length()>10)
{return;}
txtresult.setText(oldvalue + number); }

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

txtmini=(TextView)findViewById(R.id.txtmini);
txtresult=(TextView)findViewById(R.id.txtresult);
btn0=(Button)findViewById(R.id.btn0);
btn1=(Button)findViewById(R.id.btn1);
btn2=(Button)findViewById(R.id.btn2);
btn3=(Button)findViewById(R.id.btn3);
btn4=(Button)findViewById(R.id.btn4);
btn5=(Button)findViewById(R.id.btn5);
btn6=(Button)findViewById(R.id.btn6);
btn7=(Button)findViewById(R.id.btn7);
btn8=(Button)findViewById(R.id.btn8);
btn9=(Button)findViewById(R.id.btn9);
btnplus=(Button)findViewById(R.id.btnplus);
btnmines=(Button)findViewById(R.id.btnmines);
btnmultiply=(Button)findViewById(R.id.btnmultiply);
btndivision=(Button)findViewById(R.id.btndivision);
btnpoint=(Button)findViewById(R.id.btnpoint);
btnclean=(Button)findViewById(R.id.btnclean);
btncleanentity=(Button)findViewById(R.id.btncleanentity);
btnback=(Button)findViewById(R.id.btnback);
btnsign=(Button)findViewById(R.id.btnsign);
btn0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber(0);
}
});
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber(1);
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber(2);
}
});
btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber(3);
}
});
btn4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber(4);
}
});
btn5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber(5);
}
});
btn6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber(6);
}
});
btn7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber(7);
}
});
btn8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber(8);
}
});
btn9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber(9);
}
});
btnplus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendOperator("+");
}
});
btnmines.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendOperator("-");
}
});
btnmultiply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendOperator("*");
}
});
btndivision.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendOperator("/");
}
});
btnpoint.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
point();
}
});
btnclean.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txtresult.setText("0");
txtmini.setText("");
currentresult=0;
resetlcd=false;
}
});
btncleanentity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txtresult.setText("0");
}
});
btnback.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
backOne();
}
});
btnequal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
prosessEqual();
}
});

}
}
 
 

نظرات

FSR 9 سال پیش
این کدهات که درسته مشکل از جای دیگه هستش یه نمای کلی تر از کدت بزار.
من پروژه رو یکبار دیگه درست کردم و دوباره با onclick به مشکل روبرو میشم. واضح ترش اینه که در پروژه قبل ایراد رو از خط onclick میگرفت و الان هم ک پروژه رو دوباره ساختم از هیچکدوم onclickها ایراد نمیگیره فقط از یکیشون ایراد میگیره درصورتی که کپی شده از بقیه onclick هست. لطفا راهنمایی کنید چرا اینطوری میشه؟
من خط آخر که مربوط به ONCLICK مساوی هست رو وقتی پاک میکنم از کرش در میاد
k112 9 سال پیش
دوست عزیز btnEqual خالی هست واسه همین خطا میده ... شی مورد نظر رو بهش ندادی

هنوز پاسخی ثبت نشده است


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