2016-10-04 24 views
-1

マップメソッド(showmap、addmarkerなど)を処理するクラスを作成しようとしていますが、これらのメソッドをアクティビティまたはフラグメントで呼びますが、エラー:コンテキストgetResources()、リソースを見つけることができません

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference 

私はそれが何を意味するのか知っていますが、私はそれを解決できません。
誰かが私を助けてくれることを願っています。ここで

は、マップcalssです:

public class MapHandle extends AppCompatActivity implements LocationListener { 

private SupportMapFragment mapFragment; 
private GoogleMap map; 


public void initMap() { 


    mapFragment = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)); 
    if (mapFragment != null) { 
     mapFragment.getMapAsync(new OnMapReadyCallback() { 
      @Override 
      public void onMapReady(GoogleMap map) { 
       createMap(map); 
      } 
     }); 
    } else { 
     Toast.makeText(this, "Error - Map Fragment was null!!", Toast.LENGTH_SHORT).show(); 
    } 


} 

public void createMap(GoogleMap googleMap) { 
    map = googleMap; 
    if (map != null) { 
     // Map is ready 
     Toast.makeText(this, "Map Fragment was loaded properly!", Toast.LENGTH_SHORT).show(); 
    } else { 
     Toast.makeText(this, "Error - Map was null!!", Toast.LENGTH_SHORT).show(); 
    } 
} 
} 

そして、ここで私が活動中でそれを呼び出す:

public class FragOne extends Fragment { 

MapHandle mh; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    mh = new MapHandle(); 
    mh.initMap(); 
    return inflater.inflate(R.layout.frag1,container,false); 
} 
} 
+0

もっと見るstacktrace –

+0

'MapHandle'は独自のレイアウトを持っていますか?あなたはこの活動をいつでも開いていますか? –

答えて

0

あなたはコンテキストがnullになり、この

mh = new MapHandle(); 

を使用することはできませんこれは管理されていないアクティビティになっています。

onAttach(Context context)を使用して、コンテキストをキャストして親アクティビティへの参照を取得できます。

また、FragOneは、地図をロードするよりも任意の目的を果たすように見えるので、FragOne負荷を持っており、マップ自体を表示する(例えばextends SupportMapFragment

そして、以下のコメントとして、MapHandleはする必要はないように思われませんアクティビティ。主にあなたが実装していないonCreate、これはあなたがそうでなければ呼び出すでしょうinitMap

+0

'MapHandle'には' AppCompatActivity'を拡張するポイントがありません。これは 'Map'と' Location'の抽象化の作成にしか使われていないためです。 Bbeniは 'AppCompatActivity'に拡張する代わりに、必要なオブジェクトをexに渡すべきです。 'Context'、' FragmentManager' –

関連する問題