计算器的多个 onClick 函数?

https://imgur.com/a/2UyKR8r


public class MainActivity extends AppCompatActivity {


    int c,d;

    float x,y,z,a;

    EditText ed1,ed2;

    TextView t1;

    Button b1,b2,b3,b4;


    public void add(View v){


       ed1 =  findViewById(R.id.editText);


       ed2 =  findViewById(R.id.editText2);


       t1  =  findViewById(R.id.textView);


       b1    =  findViewById(R.id.button);

       b2    =  findViewById(R.id.button2);

       b3    =  findViewById(R.id.button3);

       b4    =  findViewById(R.id.button4);



       c = Integer.parseInt(ed1.getText().toString());


       d = Integer.parseInt(ed2.getText().toString());


       x = c + d;


       t1.setText(String.valueOf(x));

    }

    public void sub(View v){


        y = c-d;

        t1.setText(String.valueOf(y));

    }

    public void mul(View v){


        z = c*d;

        t1.setText(String.valueOf(z));

    }

    public void div(View v){


        a = c/d;

        t1.setText(String.valueOf(a));

    }


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


    }

}

单击减法(子)、乘法、除法时应用程序崩溃。


但是如果我先做加法然后点击任何其他功能它会工作正常,这是第一次点击按钮时。检查图像。


隔江千里
浏览 117回答 2
2回答

心有法竹

您正在该add方法中初始化您的视图。你应该在onCreate方法中这样做。这就是为什么如果您先单击添加按钮它会起作用的原因。public void add(View v){   c = Integer.parseInt(ed1.getText().toString());   d = Integer.parseInt(ed2.getText().toString());   x = c + d;   t1.setText(String.valueOf(x));}@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    ed1 = findViewById(R.id.editText);    ed2 = findViewById(R.id.editText2);    t1 = findViewById(R.id.textView);    b1 = findViewById(R.id.button);    b2 = findViewById(R.id.button2);    b3 = findViewById(R.id.button3);    b4 = findViewById(R.id.button4);}编辑:您仅在方法中从 EditText 获取值add。您应该为其余操作添加以下两行:c = Integer.parseInt(ed1.getText().toString());d = Integer.parseInt(ed2.getText().toString());

函数式编程

确切地说你会崩溃(NullPointerException因为null object reference t1还没有引用所以你必须add()调用onCreate方法 @Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    add()}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java