Java 与Android中的上下文相关

Java 与Android中的上下文相关,java,android,Java,Android,我还不太了解上下文。在大多数情况下,我看到人们在构造函数中使用“this”关键字作为上下文。我正在编写一个有两个活动的应用程序-MainActivity和DisplayMessageActivity。这两个活动都包含菜单项-搜索和设置。如果我点击“搜索”,就会出现一个祝酒词,上面写着“搜索被点击”,设置也是如此。因为这两个活动的触摸操作是相同的,所以我制作了一个单独的类MenuMethods来处理toast显示。MenuMethods将包含2个公共静态void方法来显示toast。以下是相关代码

我还不太了解上下文。在大多数情况下,我看到人们在构造函数中使用“this”关键字作为上下文。我正在编写一个有两个活动的应用程序-MainActivity和DisplayMessageActivity。这两个活动都包含菜单项-搜索和设置。如果我点击“搜索”,就会出现一个祝酒词,上面写着“搜索被点击”,设置也是如此。因为这两个活动的触摸操作是相同的,所以我制作了一个单独的类MenuMethods来处理toast显示。MenuMethods将包含2个公共静态void方法来显示toast。以下是相关代码:

    @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.openSearch(MyActivity.this);

public static void openSearch(Context ctx){

    Toast.makeText(ctx, "Search was Clicked!", Toast.LENGTH_SHORT).show();
}

不过,在您的情况下,没有理由单独设置一个类
MenuMethods

非常感谢Alex。我只是个初学者。我还在学习。我写这段代码是为了理解上下文。在这种情况下,我认为MenuMethods.this不是有效的上下文,因为它没有扩展任何活动。我说的对吗?是的,MenuMethods只是您编写的一个类,它对上下文一无所知。相反,活动扩展了上下文,因此活动就是上下文。上下文是一个类,没有别的