Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android上更新标签?_Java_Android_Android Layout_Android Widget - Fatal编程技术网

Java 在Android上更新标签?

Java 在Android上更新标签?,java,android,android-layout,android-widget,Java,Android,Android Layout,Android Widget,当我从第三个选项卡中选择一个城市时,我希望它显示在“地图”选项卡中。例如,当我第一次选择“奥斯汀”作为城市时,它会显示在地图上(如下图所示)。但当我再次回到“城市”选项卡并选择其他城市时,“地图”选项卡中不会更新该城市。你能告诉我,每次我点击“地图”选项卡时,是否有办法刷新“地图活动”吗 public class HelloTabWidget extends TabActivity implements OnTabChangeListener {` private TabHost mt

当我从第三个选项卡中选择一个城市时,我希望它显示在“地图”选项卡中。例如,当我第一次选择“奥斯汀”作为城市时,它会显示在地图上(如下图所示)。但当我再次回到“城市”选项卡并选择其他城市时,“地图”选项卡中不会更新该城市。你能告诉我,每次我点击“地图”选项卡时,是否有办法刷新“地图活动”吗

public class HelloTabWidget extends TabActivity implements OnTabChangeListener {`

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

        Resources res = getResources(); 
        TabHost tabHost = getTabHost(); 
        TabHost.TabSpec spec;  
        Intent intent;  
        mtabHost = getTabHost();
        mtabHost.setOnTabChangedListener(this);

        intent = new Intent().setClass(this, BarActivity.class);        
        spec = tabHost.newTabSpec("Name").setIndicator("Name",res.getDrawable(R.drawable.ic_tab_bar)).setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, MapsActivity.class);
        spec = tabHost.newTabSpec("Map").setIndicator("Map",res.getDrawable(R.drawable.ic_tab_map)).setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, CityActivity.class);
        spec = tabHost.newTabSpec("city").setIndicator("City", res.getDrawable(R.drawable.ic_tab_city)).setContent(intent); 
        tabHost.addTab(spec);

        tabHost.setCurrentTab(2);
    }

    public void onTabChanged(String tabId) {        
        int a = mtabHost.getCurrentTab();
        String b = Integer.toString(a); 
        if(b.equals("1"))
        {           
            Toast.makeText(getApplicationContext(), "Map Selected", Toast.LENGTH_LONG).show();
        }               
    } 
}

更新:

     `public class MapsActivity extends MapActivity 
     {  
MapView mapView;  
MapController mc;
GeoPoint p;`

class MapOverlay extends com.google.android.maps.Overlay
{
    @Override
    public boolean draw(Canvas canvas, MapView mapView, 
    boolean shadow, long when) 
    {
        super.draw(canvas, mapView, shadow); 
        Point screenPts = new Point();
        mapView.getProjection().toPixels(p, screenPts);
         Bitmap bmp = BitmapFactory.decodeResource(
            getResources(), R.drawable.pushpin);            
        canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);         
        return true;
    }
 }

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

    mapView = (MapView) findViewById(R.id.mapView);
    LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);  
    View zoomView = mapView.getZoomControls(); 

    zoomLayout.addView(zoomView, 
        new LinearLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, 
            LayoutParams.WRAP_CONTENT)); 
    mapView.displayZoomControls(true);


    String []coordinates = new String[4];
    coordinates[0] = "33.477863"; coordinates[1] = "-101.855166"; //Just in-case user didn't choose a city 

    if(CityActivity.value.equals("Austin")) { //This 'value' is recived from CityActivity. Depending on what city user chooses.
        coordinates[0] = "30.260053"; coordinates[1] = "-97.738593"; }
    else if(CityActivity.value.equals("Dallas")) {
        coordinates[0] = "33.554519"; coordinates[1] = "-101.855621"; }
    else if(CityActivity.value.equals("Slaton")) {
        coordinates[0] = "33.577863"; coordinates[1] = "-101.855166"; }


    double lat = Double.parseDouble(coordinates[0]);
    double lng = Double.parseDouble(coordinates[1]);

    p = new GeoPoint(
        (int) (lat * 1E6), 
        (int) (lng * 1E6));

    mc = mapView.getController();
    mc.animateTo(p);
    mc.setZoom(16); 
    mapView.invalidate();

    MapOverlay mapOverlay = new MapOverlay();
    List<Overlay> listOfOverlays = mapView.getOverlays();
    listOfOverlays.clear();
    listOfOverlays.add(mapOverlay);     
    mapView.invalidate();
}

@Override
protected boolean isRouteDisplayed() {
    return false;
}  }
`公共类MapsActivity扩展了MapActivity
{  
地图视图;
地图控制器;
地质点p`
类MapOverlay扩展了com.google.android.maps.Overlay
{
@凌驾
公共布尔绘制(画布、地图视图、地图视图、,
布尔阴影(长时)
{
super.draw(画布、地图视图、阴影);
点屏幕PTS=新点();
getProjection().toPixels(p,screenPts);
位图bmp=BitmapFactory.decodeResource(
getResources(),R.drawable.pushpin);
canvas.drawBitmap(bmp,screenPts.x,screenPts.y-50,null);
返回true;
}
}
@凌驾
创建时的公共void(Bundle savedInstanceState)
{       
super.onCreate(savedInstanceState);
setContentView(R.layout.main4);
mapView=(mapView)findViewById(R.id.mapView);
LinearLayout zoomLayout=(LinearLayout)findViewById(R.id.zoom);
View zoomView=mapView.GetZoomControl();
zoomLayout.addView(zoomView,
新建LinearLayout.LayoutParams(
LayoutParams.WRAP_内容,
LayoutParams.WRAP_内容);
mapView.DisplayZoomControl(真);
字符串[]坐标=新字符串[4];
坐标[0]=“33.477863”;坐标[1]=“-101.855166”;//以防用户没有选择城市
if(CityActivity.value.equals(“Austin”){//此“值”是从CityActivity接收的。具体取决于城市用户的选择。
坐标[0]=“30.260053”;坐标[1]=“-97.738593”}
else if(CityActivity.value.equals(“达拉斯”)){
坐标[0]=“33.554519”;坐标[1]=“101.855621”}
else if(CityActivity.value.equals(“Slaton”)){
坐标[0]=“33.577863”;坐标[1]=“-101.855166”}
double lat=double.parseDouble(坐标[0]);
double lng=double.parseDouble(坐标[1]);
p=新的地质点(
(内部)(纬度*1E6),
(国际)(液化天然气*1E6));
mc=mapView.getController();
司马迁(p),;
mc.setZoom(16);
mapView.invalidate();
MapOverlay MapOverlay=新的MapOverlay();
List ListoForLays=mapView.getOverlays();
listOfOverlays.clear();
添加(映射覆盖);
mapView.invalidate();
}
@凌驾
受保护的布尔值isRouteDisplayed(){
返回false;
}  }
你能告诉我,每次我点击“地图”选项卡时,是否有办法刷新“地图活动”吗

首先把你的注意力转移到新的城市

  mapController.animateTo(new GeoPoint(   (int) (lat * 1E6), 
        (int) (lng * 1E6))
mapView.invalidate()
/
mapView.postInvalidate()
刷新地图

String[]坐标=新字符串[4];
String []coordinates = new String[4];
coordinates[0] = "33.477863"; coordinates[1] = "-101.855166"; //Just in-case user didn't choose a city 

if(CityActivity.value.equals("Austin")) { //This 'value' is recived from CityActivity. Depending on what city user chooses.
    coordinates[0] = "30.260053"; coordinates[1] = "-97.738593"; }
else if(CityActivity.value.equals("Dallas")) {
    coordinates[0] = "33.554519"; coordinates[1] = "-101.855621"; }
else if(CityActivity.value.equals("Slaton")) {
    coordinates[0] = "33.577863"; coordinates[1] = "-101.855166"; }


double lat = Double.parseDouble(coordinates[0]);
double lng = Double.parseDouble(coordinates[1]);

p = new GeoPoint(
    (int) (lat * 1E6), 
    (int) (lng * 1E6));


mc = mapView.getController();
mc.animateTo(p);
mc.setZoom(16); 
mapView.invalidate();

MapOverlay mapOverlay = new MapOverlay();
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);     
mapView.invalidate();
坐标[0]=“33.477863”;坐标[1]=“-101.855166”//以防用户没有选择城市 if(CityActivity.value.equals(“Austin”){//此“值”是从CityActivity接收的。具体取决于城市用户的选择。 坐标[0]=“30.260053”;坐标[1]=“-97.738593”} else if(CityActivity.value.equals(“达拉斯”)){ 坐标[0]=“33.554519”;坐标[1]=“101.855621”} else if(CityActivity.value.equals(“Slaton”)){ 坐标[0]=“33.577863”;坐标[1]=“-101.855166”} double lat=double.parseDouble(坐标[0]); double lng=double.parseDouble(坐标[1]); p=新的地质点( (内部)(纬度*1E6), (国际)(液化天然气*1E6)); mc=mapView.getController(); 司马迁(p),; mc.setZoom(16); mapView.invalidate(); MapOverlay MapOverlay=新的MapOverlay(); List ListoForLays=mapView.getOverlays(); listOfOverlays.clear(); 添加(映射覆盖); mapView.invalidate();

尝试在OnResume()方法中移动此代码和平

您必须在“城市”选项卡中使用OnResume()方法来维护上次更新的城市。主要原因是,当您首先单击地图时,正在加载新的地图活动。第二次单击map选项卡时,活动已经加载,并且不会调用onCreate方法。您可以使用onStart/onResume方法刷新/加载地图活动中的数据。非常感谢您的快速回复。你能编辑上面的代码并告诉我如何使用OnResume()吗。我是新手,还在学习。发布MapActivity的代码。更改必须在那里。我已经在原始问题的末尾发布了MapActivity代码。谢谢。谢谢你的详细回答。我试过了,但运气不好。你能看看我上面更新的问题并给我举个例子吗?非常感谢你提供的所有信息。现在它工作得很好。你帮了大忙。