Ошибка при передаче контекста

1

Я пытаюсь передать контекст из одного класса в другой.

Класс вызова:

  mForgotPatternButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            new ListOfAccounts(v.getContext());
        }
    });

Вызываемый класс:

public ListOfAccounts(Context context) {
     super(context);
     mAccounts = new ArrayList<String>();
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle("Select the account");                    
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(),R.layout.list_all_accounts, mAccounts);
        AccountManager.get(context).addOnAccountsUpdatedListener(ListOfAccounts.this, null, true);              
        builder.setAdapter(adapter, new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialogInterface, int item) {
                  mCallback.forgotPattern(true);
                   return;
               }
        });
        builder.create().show();            
    }

Вместо передачи "v.getContext()", я даже попытался дать "getContext()". Но во всех случаях я получаю следующее исключение

05-24 16:11:27.087: ERROR/AndroidRuntime(4429): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

Просьба предоставить решение для этого.

Любая помощь в этом отношении будет хорошо оценена.

С наилучшими пожеланиями, Рони

Теги:
android-layout

2 ответа

2

Иногда getContext() или даже getApplicationContext() приводит к этому исключению. Попробуйте пройти

this

или

YourActivity.this

Активность наследуется от Context, поэтому она работает, хотя я действительно не знаю, зачем получать контекст, как это должно быть сделано, это не сработает, давая это странное исключение.

  • 0
    Привет, Федерико и Егор, спасибо за ваш ответ ... но синтаксис вызывающего класса не позволяет мне передавать «this» или «YourActivity.this», поскольку он не расширяет действие. Вот мое определение вызывающего класса - class PatternUnlockScreen extends LinearLayoutWithDefaultTouchRecepient implements KeyguardScreen, KeyguardUpdateMonitor.InfoCallback, KeyguardUpdateMonitor.SimStateCallback Простите за неправильное форматирование.
  • 0
    Тогда у вас есть проблемы! Нет, правда, это похоже на ошибку. Это случилось со мной, получив это исключение, выполнив getContext и решив его, просто передав ссылку на Activity. И нет другого способа получить контекст или контекст текущего выполняемого действия. Все, что я могу придумать, это чтобы вы передали ссылку Activity в конструктор вашего класса или что-то в этом роде, чтобы убедиться, что вы получаете правильный контекст через все ваши методы.
Показать ещё 5 комментариев
1

Попробуйте пропустить YourActivityName.this вместо getContext(). Надеюсь, это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню