Ошибка при передаче контекста - PullRequest
1 голос
/ 24 мая 2011

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

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

  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

Пожалуйста, предоставьте решение для этого.

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

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

Ответы [ 2 ]

1 голос
/ 24 мая 2011

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

this

или

YourActivity.this

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

1 голос
/ 24 мая 2011

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

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