与Android中的上下文相关

时间:2015-02-11 20:27:57

标签: java android

我还不太了解情境。在大多数情况下,我看到人们在构造函数中使用'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无法从静态上下文中引用。 我该如何纠正这个问题?

1 个答案:

答案 0 :(得分:0)

MenuMethods.openSearch(MyActivity.this);

public static void openSearch(Context ctx){

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

虽然在你的案例中有一个单独的课程MenuMethods

,但没有什么理由