可以使用"mContext"(在onCreate初始化)吗?

sve*_*ija 1 android android-context

这是一个坏习惯,为什么会这样?因此,在onCreate之后添加此权限的每个活动 ......

mContext = this;
Run Code Online (Sandbox Code Playgroud)

然后用它在所有其他情况下的上下文必需的?例如

Toast.makeText(mContext, mContext.getString(R.string.someString), Toast.LENGTH_LONG);
Run Code Online (Sandbox Code Playgroud)

编辑:如果我有这样的事情......如何传递上下文怎么办?因为不能应用(因为View.OnClickListener()).

someButton = (Button) findViewById(R.id.someButton);
someButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(mContext, mContext.getString(R.string.warning), Toast.LENGTH_LONG).show();
    }
});
Run Code Online (Sandbox Code Playgroud)

Com*_*are 9

这是一个坏习惯,为什么会这样?

是的,这是一个坏习惯.这是浪费代码.thismContext你更短,你有一个额外的代码行来设置数据成员.

我不同意Damiean先生总是使用的建议getApplication().使用getApplication()时,特别需要的Application对象.你既不需要也不想Application创建一个对象Toast- 你Activity完全适合Context在那里使用.该Application对象无法在许多地方工作,特别是在处理涉及UI的事物时.

  • @svebee:`this`肯定可以应用.您必须使用外部类名称来限定它(例如,`MyActivityClass.this`). (3认同)