无法编译用于乘法的异步应用程序

时间:2017-06-08 17:58:41

标签: java android

我尝试在App中制作我的第一个AsyncTask。此应用程序应从2个字段编号下载,然后在第3个字段中进行乘法和显示分数 这很容易,但我想学习如何使用AsyncTask,我想把这个metod(用于乘法)放在其他线程中。
在我看来它看起来很好,但AndroidStudio强调我的班级MyTask。并且建议采用相同的方法...:

@Override
protected Void doInBackground(Double... params) {
    return null;
}

我可以要求提示,我现在应该怎么做?

public class MainActivity extends AppCompatActivity {

    private Button button;
    private EditText editText,editText2,editText3;
    private String a,b,c;
    private Double x1,x2,x3;

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

        button = (Button) findViewById(R.id.button);
        editText = (EditText) findViewById(R.id.editText);
        editText2 = (EditText) findViewById(R.id.editText2);
        editText3 = (EditText) findViewById(R.id.editText3);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                a = editText.getText().toString();
                b = editText2.getText().toString();
                x1 = Double.parseDouble(a);
                x2 = Double.parseDouble(b);

                calc();

            }

        });

    }

    private class MyTask extends AsyncTask<Double, Void, Void>{


        @Override
        protected Void doInBackground(Double x1, Double x2) {

            x3 = x1 * x2;
            c = String.valueOf(x3);
            editText3.setText(c);

            return null;
        }

    }

    private void calc() {
        new MyTask().execute();
    }

}

1 个答案:

答案 0 :(得分:0)

所以你需要更换 protected void void doInBackground(Double x1,Double x2) 在你的代码中 protected void void doInBackground(Double ... params) 你可以访问params [0] params [1]等参数

查看示例,例如这里 How can you pass multiple primitive parameters to AsyncTask?