グッドダイエット 私の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; }
あなたはメインスレッドUIスレッドをブロックしています。その理由は – Akshay
あなたはAkshayさんとは何ですか?申し訳ありません初心者はここに:) –
'AdvanceSearch advanceSearch = new AdvanceSearch();' - これは、あなたの "MainActivity"の完全にスタンドアロンのインスタンスを提供します。そのUIは表示されないので、マーカーを追加することは全く役に立たない。 'android'に' Activity'を表示したいなら、 'startActivity(new Intent(myCurrentContext、MyNewActivity.class));' Shivam Rawatの答えも参照してください。 – 0X0nosugar