簡體   English   中英

我如何從匿名課程訪問我的主課程?

[英]How am I accessing my main class from an anonymous class?

我以為我很清楚自己在做什么,但每當我覺得自己能夠很好地掌握某些東西時,我就證明錯了:)

有問題的代碼就是這個

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




mButton = (Button)findViewById(R.id.m_button);
mButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(intent);
        }
    });

    }

我的困惑在於new Intent()startActivity方法。

我假設只要我們在一個匿名類View.OnClickListener ,我就必須做一些像MainActivity.this.startActivity(intent);

當我不在匿名類中時,我可以簡單地執行new Intent(this,SecondActivity.class);

有人可以解釋為什么我能夠調用startActivity(); 方法,但不能只在intent參數中使用this

在匿名內部類的情況下, this是匿名類本身。 要訪問外部類this從一個匿名你需要做的OuterClassName.this

但是,允許內部類從外部類訪問變量和方法。 內部階級是否是匿名的,無論如何都沒有區別。

看到:

我以為內部類可以訪問外部類變量/方法?

Java嵌套內部類訪問外部類變量

這是靜態和非靜態內部類之間最重要的差異之一。

如果(例如)你在兩個類中都有一個具有相同名稱的方法,那么你只需要類名,這樣它就可以告訴你的意思。 這就是與發生this ,內和外班有this -所以它默認為內部一個,除非你說,否則。

從內部類中,您可以使用新的Intent(MainActivity.this, AnotherActivity.class)

因為它是一個this的外活動,而不是內部類的this

暫無
暫無

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

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