2016-02-29 101 views
1

子類擴展了父類。
父類有一些代碼,我不想在onCreate()執行。如何檢查是否有方法被孩子調用?

我該怎麼做?

家長:

public class MainActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     if (!child) 
     { 
       ... more code ... 
     } 
    } 
} 

兒童:

public class SingleArticulo extends MainActivity { 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_single_articulo); 

     ... other code ... 
    } 
} 
+0

就是這樣。當你重寫方法並且子對象執行它時,它將執行overriden方法,而不是父對象的方法。 – antorqs

+1

@aquiros:注意'super.onCreate()'那裏。 Android框架需要調用AppCompatActivity.onCreate(),因此必須調用父類的方法。 – dsh

+0

@dsh你說得對。我的錯。 – antorqs

回答

1

使用Template Method模式。

基類:

public class MainActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     this.doMoreOnCreate() 
    } 

    protected void doMoreOnCreate() { 
       ... more code ... 
    } 
} 

兒童:

public class SingleArticulo extends MainActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_single_articulo); 

     ... other code ... 
    } 

    @Override 
    protected void doMoreOnCreate() { 
    } 
}