1

这是一个坏习惯,如果是,为什么?因此,在每个活动中,在onCreate之后添加这个...

mContext = this;

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

Toast.makeText(mContext, mContext.getString(R.string.someString), Toast.LENGTH_LONG);

编辑:如果我有这样的东西......应该如何传递上下文?因为不能应用(因为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();
    }
});
4

2 回答 2

9

这是一个坏习惯,如果是,为什么?

是的,这是一个坏习惯。这是对代码的浪费。this比 短mContext,并且您有一行额外的代码来设置数据成员。

我不同意 Damiean 先生关于始终使用getApplication(). getApplication()当您特别需要该Application对象时使用。您既不需要也不想要Application用于创建的对象Toast——您的对象Activity非常适合Context在那里使用。该Application对象在许多地方都无法工作,尤其是在处理涉及 UI 的事情时。

于 2011-02-26T18:15:40.190 回答
0

你可以this改用。即使在 OnClickListener 或其他子类中,您也可以ActivityName.this像这样使用:

someButton = (Button) findViewById(R.id.someButton);
someButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(ActivityName.this, ActivityName.this.getString(R.string.warning), Toast.LENGTH_LONG).show();
    }
});
于 2015-11-19T19:24:13.610 回答