在AndroidStudio中使用AsyncTask

在AndroidStudio中使用AsyncTask,android,android-asynctask,Android,Android Asynctask,我想在Android Studio中使用AsyncTask编写一个Fibonacci应用程序。虽然我的应用程序中没有错误,但当我运行它时,它会显示:“我的应用程序已停止!”。有人能指出我的错误吗? 我在这里包括了java代码。 提前谢谢 package com.example.asus.myapplication; public class fibonacci extends AppCompatActivity implements View.OnClickLi

我想在Android Studio中使用AsyncTask编写一个Fibonacci应用程序。虽然我的应用程序中没有错误,但当我运行它时,它会显示:“我的应用程序已停止!”。有人能指出我的错误吗? 我在这里包括了java代码。 提前谢谢

package com.example.asus.myapplication;

public class fibonacci
        extends AppCompatActivity
        implements View.OnClickListener {

    private Button SolveButton;
    private EditText Number;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fibonacci);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);


        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        Number = (EditText) findViewById(R.id.editText);
        Number.setOnClickListener(this);
        SolveButton = (Button) findViewById(R.id.button);
        SolveButton.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch(view.getId()) {
            case R.id.button: {
                double i =
                        Double.parseDouble(Number.getText().toString());
                new fibonacci_thread().execute(i);
                break;
            }
        }
    }


    public class fibonacci_thread
            extends AsyncTask<Double, Void,
            Double> {
        double s1 = 0;
        double s2 = 1;
        double s3 = 0;

        @Override
        protected Double doInBackground(Double... params) {

            for(double k = 3; k <= params[0]; k++) {
                s3 = s1 + s2;
                s1 = s2;
                s2 = s3;
            }

            return s2;
        }

        @Override
        public void onPostExecute(Double result) {
            EditText textView = (EditText) findViewById(R.id.editText2);
            String yourDoubleString = String.valueOf("Result: " +
                                                             result);
            textView.setText(yourDoubleString);
        }

        @Override
        protected void onPreExecute() {
        }

        @Override
        protected void onProgressUpdate(Void... values) {
        }
    }
}
package com.example.asus.myapplication;
公共类斐波那契
扩展AppCompative活动
实现View.OnClickListener{
私人按钮;
私人编辑文本编号;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fibonacci);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Number=(EditText)findViewById(R.id.EditText);
Number.setOnClickListener(此);
SolveButton=(按钮)findViewById(R.id.Button);
SolveButton.setOnClickListener(此);
}
@凌驾
公共void onClick(视图){
开关(view.getId()){
案例R.id按钮:{
双i=
Double.parseDouble(Number.getText().toString());
新的fibonacci_线程()。执行(i);
打破
}
}
}
公共类斐波那契螺纹
扩展异步任务{
双s1=0;
双s2=1;
双s3=0;
@凌驾
受保护的双DOIN背景(双…参数){

对于(double k=3;k您可能会得到
IllegalStateException
,在这种情况下会导致
RuntimeException
,因为您是以编程方式在视图中添加工具栏,而您的活动可能提供了装饰操作栏。从这里开始,您可以应用两种方法:

  • 使用默认操作栏并从代码中删除以下两行:

    Toolbar-Toolbar=(Toolbar)findviewbyd(R.id.Toolbar);
    设置支持操作栏(工具栏);

  • 首先删除默认的操作栏,然后在其位置使用您自己的工具栏。您可以查看详细信息


  • 禁用设置中的即时运行后,我的问题解决了!这样我就可以在我的设备上安装应用程序了。感谢朋友们的帮助!

    显示日志,例外情况是应用程序会崩溃。请更新您的问题并添加
    日志
    有一个执行按钮
    确定。但您的应用程序何时崩溃
    String.valueOf(“Result:+Result”);
    ???这看起来不太好。您也可以使用
    “Result:”+result;
    只要给我你的监视器或Logcat logI,我检查了my styles.xml,我得到了这两行:false-true,所以我想我的安装问题与工具栏无关。