Android 使用“mContext”(在onCreate初始化)可以吗?
这是一个坏习惯吗?如果是,为什么?所以在每一个活动中,在onCreate之后添加这个 然后在需要上下文的所有其他情况下使用它?比如说Android 使用“mContext”(在onCreate初始化)可以吗?,android,android-context,Android,Android Context,这是一个坏习惯吗?如果是,为什么?所以在每一个活动中,在onCreate之后添加这个 然后在需要上下文的所有其他情况下使用它?比如说 Toast.makeText(mContext, mContext.getString(R.string.someString), Toast.LENGTH_LONG); 编辑:如果我有这样的东西…应该如何传递上下文?因为View.OnClickListener无法应用此选项 这是一个坏习惯吗?如果是,为什么 是的,这是个坏习惯。这是对代码的浪费。这比mCont
Toast.makeText(mContext, mContext.getString(R.string.someString), Toast.LENGTH_LONG);
编辑:如果我有这样的东西…应该如何传递上下文?因为View.OnClickListener无法应用此选项
这是一个坏习惯吗?如果是,为什么
是的,这是个坏习惯。这是对代码的浪费。这比mContext短,您还有一行额外的代码用于设置数据成员
我不同意Damiean先生总是使用getApplication的建议。当您特别需要应用程序对象时,请使用getApplication。您既不需要也不希望创建Toast的应用程序对象—您的活动是一个非常适合在其中使用的上下文。应用程序对象在许多地方无法工作,特别是在处理涉及UI的事情时
这是一个坏习惯吗?如果是,为什么
是的,这是个坏习惯。这是对代码的浪费。这比mContext短,您还有一行额外的代码用于设置数据成员
我不同意Damiean先生总是使用getApplication的建议。当您特别需要应用程序对象时,请使用getApplication。您既不需要也不希望创建Toast的应用程序对象—您的活动是一个非常适合在其中使用的上下文。应用程序对象在许多地方无法工作,特别是在处理涉及UI的事情时。您可以使用它。即使在OnClickListener或其他子类中,也可以使用ActivityName。如下所示:
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();
}
});
你可以用这个代替。即使在OnClickListener或其他子类中,也可以使用ActivityName。如下所示:
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();
}
});
我用另一个例子编辑了我的问题。Tnx。谢谢你的帮助。@svebee:这肯定是适用的。您必须使用外部类名(例如MyActivityClass)来定义它的作用域。这一点我再强调也不为UI使用应用程序上下文了。这通常会以意想不到的方式出现,尤其是在蜂巢中。我用另一个例子编辑了我的问题。Tnx。谢谢你的帮助。@svebee:这肯定是适用的。您必须使用外部类名(例如MyActivityClass)来定义它的作用域。这一点我再强调也不为UI使用应用程序上下文了。这通常会以意想不到的方式表现,尤其是在蜂巢中。
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();
}
});