Я пытаюсь передать контекст из одного класса в другой.
Класс вызова:
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
Просьба предоставить решение для этого.
Любая помощь в этом отношении будет хорошо оценена.
С наилучшими пожеланиями, Рони
Иногда getContext() или даже getApplicationContext() приводит к этому исключению. Попробуйте пройти
this
или
YourActivity.this
Активность наследуется от Context, поэтому она работает, хотя я действительно не знаю, зачем получать контекст, как это должно быть сделано, это не сработает, давая это странное исключение.
class PatternUnlockScreen extends LinearLayoutWithDefaultTouchRecepient implements KeyguardScreen, KeyguardUpdateMonitor.InfoCallback, KeyguardUpdateMonitor.SimStateCallback
Простите за неправильное форматирование.
Попробуйте пропустить YourActivityName.this
вместо getContext()
. Надеюсь, это поможет.