0
我還沒有很好的理解上下文。在大多數情況下,我看到人們在構造函數中使用'this'關鍵字作爲上下文。我正在編寫一個具有兩項活動的應用程序 - MainActivity和DisplayMessageActivity。這兩個活動都包含菜單項 - 搜索和設置。如果我點擊「搜索」,應該出現一個敬酒 - 「搜索已點擊」並且相同的設置。由於這些操作對於這兩種活動的觸摸都是相同的,因此我創建了一個獨立的MenuMethods類來處理吐司顯示。 MenuMethods將包含2個公共靜態void方法來顯示Toast。下面是相關代碼:Android中的上下文相關問題
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
MenuMethods.openSearch();
}
if (id==R.id.action_search){
MenuMethods.openSettings();
}
和MenuMethods類中的方法是這樣的:
public class MenuMethods {
public static void openSearch(){
Toast.makeText(this, "Search was Clicked!", Toast.LENGTH_SHORT).show();
}
public static void openSettings(){
Toast.makeText(this, "Settings was Clicked!",Toast.LENGTH_SHORT).show();
}
}
可能的錯誤:(應用程序).MenuMethods.this不能從靜態上下文引用。 我該如何糾正?
非常感謝亞歷克斯。我只是一個初學者。我仍在學習。我正在編寫這個代碼來理解上下文。在這種情況下,我認爲MenuMethods.this不是有效的上下文,因爲它不擴展任何活動。我對嗎? – Whiskeyjack 2015-02-11 20:49:46
是的,MenuMethods只是你寫的一個類,它不知道Context的任何內容。相反,Activity擴展了Context,因此Activity是一個Context。上下文是一個類,沒有別的 – 2015-02-11 21:18:03