2014-01-08 51 views
-1

我在MapViewActivity.java为什么我无法从班级访问公共方法? (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 
+7

那么这是在MapViewActivity,所以你需要调用它* * MapViewActivity ... –

+0

你想达到什么? –

+0

@KamleshArya仍然会失败,因为MapViewActivity.this – marcinj

回答

1

改变您的使用与的context参数的静态方法,并通过任何mSelectedMap过,这这样你可以使用这个方法在你的整个应用程序在有效context(像activity)传球和由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); 
    } 
+0

尝试你的代码,这就是我收到的:类型Intent中的方法putExtra(String,boolean)不适用于参数(字符串,对象) – user3170491

+0

什么是类型mSelectedMap的? (你从来没有说过) – petey

+0

你可以改变参数',Object mSelectedMap'到',boolean mSelectedMap''如果它是一个布尔值等等... – petey

0

该方法没有按属于MapActivity,属于MapViewActivity。你不能从MapViewActivity以外拨打它。

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

相关问题