2013-09-26 107 views
-4

Toast.makeText()方法的其中一个参数是上下文。Android中的敬酒

而对于该参数,我可以看到在某些Android教科书中给出的值为ActivityName.this

不应该是this.xxx

+0

你是如何比较'ActivityName.this'和'this.xxx'? 'this.xxx'将始终引用类的成员本身。 –

+0

你在说'this'或'this.xxx' –

回答

1

并不总是,这取决于你在哪里创建吐司。例如,如果您在Button点击侦听器的onClick方法中创建了Toast,则this将是Button,它不能提供上下文。

+0

你不能在click监听器中使用'this'只有它是匿名类..有几种实现监听器的方法..一种方法是声明'android: onClick =“click”属性为按钮XML并声明方法'click(View v){//执行任务}'..在这种情况下,侦听器不是匿名类 –

+0

这只是一个可能的例子来解释为什么你不能总是将此用作上下文。我不打算做这个讲座。 – fasteque

+0

放轻松.u刚刚提到的点击监听器,因此我指出了它。 –

0

不是。如果您在ActivityName的内部类中,请致电ActivityName.this。如果你不在内部班级,你只需拨打this。 关键是要参考Activity并将其用作上下文。

1

ActivityName.this如果代码位于嵌套类中,则获取对具有该名称的封闭类的对象的引用。例如,如果你写的代码你Activity的代码中:

public void onCreate(Bundle bundle) { 
    // ... 
    Button button = (Button) findViewById(R.id.button1); 

    button.setOnClickListener(new OnClickListener() { // An anonymous nested class 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(this, "Example", Toast.LENGTH_SHORT); 
      // This one causes an error; this is not a Context 
      Toast.makeText(YourActivity.this, "Example", Toast.LENGTH_SHORT); 
      // This one works 
     } 
    }); 
} 

第一this现指型OnClickListener的对象。这不是Context,所以这是一个错误。第二个是指当地YourActivity,这是一个Activity,所以一个Context,所以它的工作原理。