2015-01-11 53 views
0

我有抽象類如下:是否可以從抽象類中調用方法?

AbstractFilePickerFragment.java

public abstract class AbstractFilePickerFragment<T> extends ListFragment 
     implements LoaderManager.LoaderCallbacks<List<T>> 

.... 

.... 

public void GoBackToPreviousDirectory() { 
    currentPath = getParent(currentPath); 
    refresh(); 
    } 
} 

OtherActivity.java

private AbstractFilePickerFragment<T> mAbstractFilePickerFragment; 

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

    setContentView(R.layout.activity_layout); 

    //THIS LINE SAYS "Cannot instantiate the type AbstractFilePickerFragment" 
    mAbstractFilePickerFragment = new AbstractFilePickerFragment(); 
} 

    public void GoBackToPreviousDir_onClick(MenuItem item) { 
     mAbstractFilePickerFragment.GoBackToPreviousDirectory(); 
    } 
} 

有沒有人,如果有可能從AbstractFilePickerFragment類調用GoBackToPreviousDirectory ???

我知道一個靜態方法會工作,但我不能爲這種情況做一個靜態方法。

謝謝你這麼多的幫助

回答

2

爲了調用一個非靜態方法,你必須實例化這個類。

根據定義,抽象類不能被實例化。所以回答是否

如果您仍然需要訪問方法,您將不得不創建一個類來擴展抽象類並實現類中的所有方法。然後,您可以在程序中實例化擴展類並調用該方法。

+0

非常感謝。你能給我一個「擴展抽象類並實現類中所有方法的類的例子或鏈接嗎?」 –

3

號第一,你不從調用方法。你調用對象作爲對象的方法是實例的類。抽象類不能被實例化。

+0

我非常感謝。非常感謝 –

相關問題