AlertDialog.Builder构造函数将Context作为其参数:AlertDialog.Builder (Context context)
,
我发现一个示例,其中参数不仅是this
,而且:new AlertDialog.Builder(MyClassName.this);
为什么?
另外,我已经用Activity
看到了这件事,这次我们在尝试达到的活动的名称中添加.class
。您能告诉我这两个关键字的含义吗?
非常感谢
最佳答案
Activity类是Context的子类,因此您可以在示例中将其用作参数。
现在,例如,如果您位于onClick方法(即按钮)内部,内部类或asynctask中,则使用'this'不会引用活动本身,因此您需要使用YourActivity.this。
相反,当您看到ClassName.class时,通常是因为您需要指定活动,服务或要启动的任何内容,在这种情况下,参数类型为Class。
例如,如果要开始活动,则使用:
Intent intent = new Intent(this or ActivityName.this, AnotherActivityName.class);
例如:
public class MyActivity extends Activity {
....
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
// in this case 'this' refers the current activity instance
// (but of course you can also use MyActivity.this
myAdapter = new ArrayAdapter(this, R.layout.list_item, items);
...
myButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// here you must use ActivityName.this because
// 'this' refers to the OnClickListner instance
Intent intent = new Intent(ActivityName.this, AnotherActivityNameActivityName.class);
startActivity(intent);
}
});
...
}