Начало новой активности в OnCreate - PullRequest
1 голос
/ 05 октября 2011

Я получил приложение для Android на основе 2 действий. Основное действие - это просто поле ввода и кнопка для получения информации о пользователе. Когда пользователь нажимает кнопку, запускается сканер штрих-кодов (ZXING).

Все работает отлично. Но знаете, я пытаюсь проверить в onCreate, если пользовательская информация уже известна. Если это правда -> запустить сканер штрих-кодов. Но похоже, что активность сканера штрих-кодов запускается дважды, потому что: Нажмите кнопку «Назад» один раз: другой сканер штрих-кодов будет активен. Двойное нажатие на кнопку «Назад»: основной актив будет активен.

это проверка внутри onCreate:

if(pref.length() == 6){
       startActivityForResult(intent, 0); 

}

и эта функция вызывается при нажатии кнопки:

 public void onClick(View view) {
        switch (view.getId()) {
        case R.id.button1:

            final EditText edit =  (EditText) findViewById(R.id.panelID);   
            if(edit.getText().toString().length() == 6){
                String temp = edit.getText().toString();
                Log.e("click", temp);
                Editor e = this.getPreferences(Context.MODE_PRIVATE).edit();
                e.putString("panelID", temp);
                e.commit();

                startActivityForResult(intent, 0);
            } else {
                Toast.makeText(this, "Ongeldige invoer (6 cijfer id)", Toast.LENGTH_LONG).show();
            }

            break;
        }
    }

Что я делаю не так?

Ответы [ 4 ]

1 голос
/ 05 октября 2011

barcodescanner не начинается дважды он возвращается к основной деятельности, которая создает еще один barcodescanner

попробуйте снять чек в onCreate и посмотреть результат

0 голосов
/ 05 октября 2011

Проблема в том, что вы не должны запускать сканер каждый раз в onCreate(). Я полагаю, что в первый раз вы идете на сканер, и ваша родительская деятельность разрушается. Когда вы вернетесь назад, он должен быть создан снова. Но это снова запускает сканер. А потом, когда вы немедленно вернетесь снова, на этот раз он еще не был уничтожен.

Это не имеет ничего общего с тем, что приложение перехватывает кнопку возврата. Это не. Назад всегда работает.

0 голосов
/ 05 октября 2011

Ваша проблема, кажется, больше в том, как вы управляете жизненным циклом действия. Если вы опубликуете код метода вашей деятельности onCreate (), мы сможем лучше увидеть, что вы пытаетесь выполнить, и предложить соответствующее решение.

0 голосов
/ 05 октября 2011

Это может работать

Очистить данные вашего текста редактирования после вызова startActivityForResult, например

edit.setText("");

Это должно привести к сбою проверки при возврате

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