簡體   English   中英

ThisActivityName.this.finish()和finish()之間有什么區別嗎

[英]Is there any difference between ThisActivityName.this.finish() and finish()

兩者之間有區別嗎?

startActivity(intent);
finish();

startActivity(intent);
ThisActivityName.this.finish();

注意: ThisActivityName是代碼所在的活動的名稱。被告知執行ThisActivityName.this.finish(); 而不是在開始新活動時僅使用finish() 所以我很好奇是否有任何區別。 在剛開始下一個活動的情況下。

沒有區別,它們是相同的。

簡單的答案

通常沒有區別。

更長的咆哮

他們正在調用相同的方法 ,但是,像ThisActivityName.this.finish();一樣調用它ThisActivityName.this.finish(); 確保在不太可能發生的情況下,無論您在哪里執行代碼,都碰巧也有一個finish方法,您將調用正確的方法。 即使在您提到要首先在哪里調用startActivity的情況下,也不會消除調用錯誤方法的可能性,特別是使用諸如finish這樣的通用名稱。

假設您位於活動文件中的自定義類中,該類具有已聲明的finish方法,並且該方法也不帶任何參數。 調用finish()將調用該方法,而不是活動1。

樣例代碼

public class WadusActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }
    public class SomeOtherClass{
        public SomeOtherClass(){
            WadusActivity.this.finish(); //This calls the activity finish
            finish(); //This calls the method below
        }
        public void finish(){
            //method also named finish
        }
    }
}

不可能? 是。 不可能? 一點也不。

我們有基本的需求是理解this是指在每種情況下。 this被原樣使用,它會參考第一包裹類實例包含關鍵字,如果我們想在層次引用更高的東西,我們需要預先設置的類名,就像你與做ThisActivityName.this

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM