我还不太了解情境。在大多数情况下,我看到人们在构造函数中使用'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无法从静态上下文中引用。 我该如何纠正这个问题?
答案 0 :(得分:0)
MenuMethods.openSearch(MyActivity.this);
public static void openSearch(Context ctx){
Toast.makeText(ctx, "Search was Clicked!", Toast.LENGTH_SHORT).show();
}
虽然在你的案例中有一个单独的课程MenuMethods