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);
                 }
        });

        ...
}

07-24 09:46
查看更多