Я новичок в Android. Я создаю одно приложение с вкладками, имеющее 5 вкладок. Я использую разные группы ViewGroup, на каждой вкладке есть соответствующая ViewGroup в соответствии с потребностями, и есть дочерняя деятельность. сначала запустите GoogleMapActivity (с оверлейными элементами) в качестве дочернего действия. эти оверлеи представляют разных пользователей. Я получаю данные этих пользователей из одного JSONArray, который возвращается одним php-файлом на сервере, имеющем данные разных пользователей. когда я запускаю свое приложение, его внешний вид ->
launching_view !
наверху есть одна панель действий с разными кнопками (например, список, профиль и обновление). когда я нажимаю на Список, он показывает мне один список всех пользователей ->
список пользователей! & user_profile! !
& когда я нажимаю на listItem, он показывает мне полный профиль реагирующего пользователя, указанного выше
Где я застрял -> ??? я хочу показать этот профиль пользователя, когда я нажимаю на MapPin ...
мой код для этого ->
public class GoogleMapActivity extends MapActivity implements ActionBar {
Button btnOnMapList, btnProfileHome, btnRefresh;
Intent intent;
private JSONArray jArray;
private JSONObject jFan_Data;
private ItemBean bean;
private FansData fansdata;//reference of FansData class that return me JSONArray
HelloItemizedOverlay itemizedOverlay;//..........
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
btnProfileHome = (Button) findViewById(R.id.btn_profile_home);
btnOnMapList = (Button) findViewById(R.id.btn_list_home);
btnRefresh = (Button) findViewById(R.id.btn_refresh_home);
super.onCreate(savedInstanceState);
setContentView(R.layout.googlemapactivity);
MapView mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapView.displayZoomControls(true);
// mapView.setSatellite(true);
/**TG_1 -> Here i write code to get my current location(e.g., through LocationManager)
* after getting location, i write my location`s latitude & longitude into
* shearedPreference */
//geading preference to get my unique id
SharedPreferences myUid=GoogleMapActivity.this.getSharedPreferences("uid", MODE_WORLD_READABLE);
String myId=myUid.getString("myId", "");
Log.i("MyUid", myId);
/** calling FansData class to get all users data. Currently i am providing my hard codded location but i have to get it from LocationManager */
fansdata=new FansData();
jArray=fansdata.jFanDataArray(1000, 12.9716060, 77.5903760, "h9ow0");
System.out.println(jArray.toString());
/** to showing Users on map as pins */
List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(
R.drawable.small_football_icon);
HelloItemizedOverlay itemizedOverlay = new HelloItemizedOverlay(
drawable, getParent());
for(int i=0;i<jArray.length();i++){
try {
jFan_Data=jArray.getJSONObject(i);
GeoPoint geoPoint = new GeoPoint((int) (jFan_Data.getDouble("lat")* 1E6),
(int) (jFan_Data.getDouble("lang")* 1E6));
OverlayItem overlayitem = new OverlayItem(geoPoint, jFan_Data.getString("name"),
jFan_Data.getString("uniqid"));
itemizedOverlay.addOverlay(overlayitem);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
mapOverlays.add(itemizedOverlay);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
@Override
public void onHomeList(View view) {
Intent in = new Intent(getParent(), MapPinsList.class);
TabGroupActivity prnt = (TabGroupActivity) getParent();
prnt.startChildActivity("MapPinsList", in);
}
@Override
public void onHomeProfile(View view) {
Intent in = new Intent(getParent(), ProfileActivity.class);
TabGroupActivity prnt = (TabGroupActivity) getParent();
prnt.startChildActivity("ProfileActivity", in);
}
@Override
public void onHomeRefresh(View view) {
// TODO Auto-generated method stub
}
@Override
public void onListMap(View view) {
// TODO Auto-generated method stub
}
@Override
public void onListProfile(View view) {
// TODO Auto-generated method stub
}
}
Мой класс HelloItemizedOverlay ->
public class HelloItemizedOverlay extends ItemizedOverlay {
private static final int VIEW_PROFILE = 1;
private static final int SEND_MASSAGE = 2;
OverlayItem item;
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
Context mContext;
public HelloItemizedOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
}
public HelloItemizedOverlay(Drawable defaultMaker, Context context) {
// super(defaultMaker);
super(boundCenterBottom(defaultMaker));
mContext = context;
}
@Override
public boolean onTap(int index) {
// Option to select on clicking pin
final String[] option = new String[] { "View Profile", "Send Massage",
"Cancle" };
// to hold option
ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext,
android.R.layout.select_dialog_item, option);
//OverlayItem item = mOverlays.get(index);
item = mOverlays.get(index);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(item.getTitle());
// builder.setMessage(item.getSnippet());
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
// TODO Auto-generated method stub
if (i == 0) {
String fId=item.getSnippet();
Toast.makeText(mContext, "Profile View is on Progress...!"+fId,
Toast.LENGTH_SHORT).show();
Intent in = new Intent(mContext, FanProfile.class);
Bundle fBundle= new Bundle();
fBundle.putString("fanId", fId);
in.putExtras(fBundle);
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.getApplicationContext().startActivity(in);
} else if (i == 1) {
Toast.makeText(mContext,"Send Massage View is on Progress...!",
Toast.LENGTH_SHORT).show();
} else if (i == 2) {
dialog.cancel();
}
}
});
builder.show();
// AlertDialog dialog= builder.create();
return true;
}
public void addOverlay(OverlayItem overlayItem) {
// for(int i=0;i<=size();i++){
mOverlays.add(overlayItem);
populate();
// }
}
@Override
protected OverlayItem createItem(int i) {
// TODO Auto-generated method stub
return mOverlays.get(i);
}
@Override
public int size() {
// TODO Auto-generated method stub
return mOverlays.size();
}
}
FanProfile в "onTap" - это то же действие, которое я вызываю, когда нажимаю на listItem в списке пользователей!
код выше работает, но он запускает вид поверх моего tabView, который скрывает мои вкладки ...
[это] http://i.stack.imgur.com/lgT2G.png
Я не понимаю, где я совершаю ошибку или делаю НЕПРАВИЛЬНО.
Ваши предложения ценны для меня !!!
Я был бы очень признателен за указатели или примеры кода, где я могу найти решение этой проблемы ...