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