Использование AsyncTask в AndroidStudio - PullRequest
0 голосов
/ 12 мая 2018

Я хочу написать приложение Фибоначчи, используя AsyncTask в Android Studio.Хотя в моем приложении нет ошибки, при запуске оно говорит: «MyApplication остановлен!».Кто-нибудь может указать на мои ошибки?Я включил код 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) {
        }
    }
}

и вот мой журнал событий во время установки приложения на «Пользовательский телефон - 7.1.0 - API 25 - 768x1280», используя Genymotion: 12:14 Genymotion: Устройство[Пользовательский телефон - 7.1.0 - API 25 - 768x1280]: запущено

12: 15 AM Выполнение задач: [: app: assemblyDebug]

12: 15 AM Сборка Gradle завершена за 6 с 61 мс

12: 15 AM Instant Run выполнил полную сборку и установку, поскольку установка на устройстве не соответствует локальной сборке на диске.(Больше не показывать)

12: 15 AM Не удается привязаться к локальному 8623 для отладчика

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

После отключения Instant Run из настроек моя проблема была решена! Таким образом, я мог установить приложение на своих устройствах. Спасибо вам за помощь!

0 голосов
/ 12 мая 2018

Вы, вероятно, получаете IllegalStateException, что приводит к RuntimeException в этом случае, потому что вы программно добавляете панель инструментов в свое представление, в то время как ваша деятельность может иметь панель действий, предоставленную декором. Отсюда в палатах вы можете применять два подхода:

  1. Используйте панель действий по умолчанию и удалите из кода следующие две строки:

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar);

  2. Сначала удалите панель действий по умолчанию, а затем используйте вместо нее собственную панель инструментов. Вы можете посмотреть здесь для деталей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...