2017-09-19 6 views
0

グッドダイエット 私のMainActivity javaにはgooglemapフラグメントの場所をマークするメソッドがありますが、そのメソッドを呼び出すとすることができ、スレッド内のハンドラを作成することはできません が呼び出されていないことをLooper.prepare()メインアクティビティクラスから非アクティビティクラスへのメソッドの呼び出し

マイmainActivity方法:非アクティビティクラスから、それは私に

java.lang.RuntimeExceptionをエラーが発生しますマーカーを作成する

public void addMarkers(Double lat, Double lng, String name){ 
    MarkerOptions options = new MarkerOptions() 
      .title(name) 
      .position(new LatLng(lat, lng)); 
    mGoogleMap.addMarker(options); 
} 

とメソッドを呼び出している私の非Activityクラスは、活動が有効になるようにアクティビティのライフサイクルを通過する必要がありますので、あなたは、通常のJavaクラスのような活動のオブジェクトを作成することはできません

private int parseDataTag(){ 
    try { 
     JSONArray ja = new JSONArray(jsonData); 
     JSONObject jo = null; 

     AdvanceSearch advanceSearch = new AdvanceSearch(); //MainActivity class 

     for(int i=0;i<ja.length();i++){ 
      jo=ja.getJSONObject(i); 

      int id = jo.getInt("id"); 
      String name = jo.getString("name"); 
      String lat = jo.getString("latitude"); 
      String lng = jo.getString("longtitude"); 
      advanceSearch.addMarkers(Double.parseDouble(lat), Double.parseDouble(lng), name); 
     } 

     return 1; 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    return 0; 
} 
+0

あなたはメインスレッドUIスレッドをブロックしています。その理由は – Akshay

+0

あなたはAkshayさんとは何ですか?申し訳ありません初心者はここに:) –

+0

'AdvanceSearch advanceSearch = new AdvanceSearch();' - これは、あなたの "MainActivity"の完全にスタンドアロンのインスタンスを提供します。そのUIは表示されないので、マーカーを追加することは全く役に立たない。 'android'に' Activity'を表示したいなら、 'startActivity(new Intent(myCurrentContext、MyNewActivity.class));' Shivam Rawatの答えも参照してください。 – 0X0nosugar

答えて

1

ですコンテキスト。

代わりに、アクティビティに返信するのに役立つインターフェイスリスナーを作成できます。

あなたはあなたが持っているコンテキストを使用して、アクティビティの内側にあなたのメソッドを呼び出す必要があり、このhere

-1

を行う方法を見つけることができます。

((MainActivity) context).yourMethod(); 
+0

これはあまりにも抽象的です。どのように役立つか正確に説明してください。 – iceman

関連する問題