2014-01-08 145 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,您可以在該類中使用它。

相關問題