0

finish()和有什么区别ActivityName.this.finish()吗?如果我们有带有 name 的活动SampleActivity,我们可以通过调用finish()和 by来完成它SampleActivity.this.finish()。有什么不同?

4

1 回答 1

8

大多数时候它是相同的,除非你在一个内部类中。

在这种情况下,第二种表示法用于消除对包含活动方法的调用的歧义。

例如:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    finish(); // the activity's finish()

    new Runnable() {

        private void finish() {
            ...
        }

        @Override
        public void run() {
            SampleActivity.this.finish(); // the activity's finish()
            finish(); // the runnable's finish()
        }
    };

    new Runnable() {

        @Override
        public void run() {
            SampleActivity.this.finish(); // the activity's finish()
            finish(); // the activity's finish() (because the inner class doesn't hide it
        }
    };
}
于 2012-11-15T08:57:07.100 回答