为什么我无法从类中访问公共方法? (Java)的

时间:2014-01-08 16:52:35

标签: java android

我在MapViewActivity.java中有以下方法

 public void startMapEditActivity() {
        Intent intent = new Intent(MapViewActivity.this, MapEditActivity.class);
        intent.putExtra(EXTRA_MESSAGE_FLOOR, mSelectedMap);
        startActivity(intent); // start map edit mode
    }

我正在尝试从MapActivity.java访问该方法:

startMapEditActivity();

但它不起作用,它会抛出以下消息:

The method startMapEditActivity() is undefined for the type MapActivity

2 个答案:

答案 0 :(得分:1)

将您的用法更改为参数为context的静态方法,并传递任何mSelectedMap,这样您就可以在整个应用程序中使用这一方法通过传入有效{{3}来启动此活动(例如context)和由mSelectedMap表示的信息:

static public void startMapEditActivity(final Context context, boolean mSelectedMap) {
    Intent intent = new Intent(context, MapEditActivity.class);
    intent.putExtra(EXTRA_MESSAGE_FLOOR, mSelectedMap);
    startActivity(intent); // start map edit mode
}

示例用法(来自视图clicklistener):

    setOnClickListener(new OnClickListener() {
        public void onClick(View view) {
            MapEditActivity.startMapEditActivity(view.getContext(), aSelectedMapObject);
        }
    }));

MapViewActivity中某些方法的示例用法:

  private void gotoMapEditActivity(){
      MapEditActivity.startMapEditActivity(MapViewActivity.this, aSelectedMapObject);
  }

答案 1 :(得分:0)

该方法不属于MapActivity,属于MapViewActivity。您无法从外部MapViewActivity拨打电话。

解决问题的最简单方法是将方法startMapEditActivity复制到类MapActivity中。这种方式MapActivity拥有自己的startMapEditActivity版本,您可以在该类中使用。