2017-02-13 19 views
4

我用這個方法來調整在谷歌地圖的活動標記:getPackageName()的片段

public Bitmap resizeMapIcons(String iconName,int width, int height){ 
    Bitmap imageBitmap = BitmapFactory.decodeResource(getResources(),getResources().getIdentifier(iconName, "drawable", getPackageName())); 
    Bitmap resizedBitmap = Bitmap.createScaledBitmap(imageBitmap, width, height, false); 
    return resizedBitmap; 
} 

現在,我想在MapView的一個片段來使用它,但我得到的錯誤「錯誤:不能找到符號方法getPackageName()「。 可能是什麼問題?

回答

6

嘗試此代替getPackageName()

getActivity().getPackageName()

+0

我不使用getPackageManager(),我用getPackageName()。但它適用於getActivity()。getPackageName()。謝謝。 –

+0

對不起,我犯了一個錯誤。 getPackageName()是正確的! – steve

3
getPackageName() 

在活動定義。您不能直接在Fragment中使用它。嘗試使用:

if(getActivity()!=null){ 
     Bitmap imageBitmap = BitmapFactory.decodeResource(getResources(),getResources().getIdentifier(iconName, "drawable", getActivity().getPackageName())); 
     //rest of your code 
    } 

最好的做法是檢查getActivity是否爲null。所以你的應用程序不會崩潰。閱讀此SO question

您還可以在您的主要活動中創建一個靜態變量,實例化爲包名稱。然後在片段中使用該變量。現在

public static String PACKAGE_NAME; 

    @Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    PACKAGE_NAME = getApplicationContext().getPackageName(); 
} 

您可以使用訪問:

MainActivity.PACKAGE_NAME 
+0

如何將if語句放在方法中?我不想使用靜態變量,因爲這樣我可以使用這種方法來處理不同的位圖。 –

+0

檢查編輯.. – rafsanahmad007

+0

我的問題是,如果我在返回前關閉結束語句我不能使用resizedBitmap變量,但如果我在返回後關閉它,比方法會遺漏返回語句。 –