传递Context时出错

时间:2011-05-24 13:46:14

标签: android android-layout

我正在尝试将上下文从一个类传递到另一个类。

致电课程:

  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

请为此提供解决方案。

在这方面的任何帮助都将受到赞赏。

最诚挚的问候, 罗尼

2 个答案:

答案 0 :(得分:1)

尝试传递YourActivityName.this而不是getContext()。希望这会有所帮助。

答案 1 :(得分:1)

有时getContext()甚至getApplicationContext()会导致此异常。尝试传递

this

YourActivity.this

Activity继承自Context,所以它可以工作,虽然我真的不知道为什么要获取上下文,因为它应该完成它不会起作用,给出了奇怪的异常。