这两段代码之间的区别是什么?

时间:2015-10-12 15:31:14

标签: java android

这两个意图启动另一个名为StartActivity的活动。 它们都在不同的环境中运行但不可替换。

Intent intent = new Intent(MainActivity.this, StartActivity.class);
startActivity(intent);

Intent intent = new Intent(this, StartActivity.class);
startActivity(intent);

2 个答案:

答案 0 :(得分:5)

当此代码出现在MainActivity的内部类中时,您会看到第一种语法,例如您为View.OnClickListener调用创建的setOnClickListener()的匿名内部类实现。它说“我们想要的thisMainActivity的实例,而不是View.OnClickListener实施的实例”。

答案 1 :(得分:0)

当有多个包装类时,您只需要使用MainActivity.this。

E.g。

public class MainActivity extends AppCompatActivity {

  Runnable runnable = new Runnable() {
    @Override
    public void run() {
      // this refers to the Runnable
      // MainActivity.this refers to the activity
    }
  };

}