才接触java和android,很多不懂的地方请教,如果文的问题太浅显,大家莫笑啊做了一个小软件,一个tabactivity下面有两个tab页,一个是mapactivity,用来存放一个mapview,其中下面有一个在丢图上标注位置的函数,代码如下
public void MarkPosition(Location location){
MapView mapview;
ZoomControls zoomcontrol;
LinearLayout linearlayout;
List<Overlay> mapoverlays;
Drawable drawable;
GeoItemizedOverlay itemizedoverlay;

mapview=(MapView)findViewById(R.id.mapview);
        zoomcontrol=(ZoomControls)mapview.getZoomControls();
        linearlayout=(LinearLayout)findViewById(R.id.zoomview);
        linearlayout.addView(zoomcontrol);
        MapController mapcontroller=mapview.getController();
        
        mapcontroller.setZoom(12);
        
        mapoverlays=mapview.getOverlays();
        drawable=this.getResources().getDrawable(R.drawable.position);
        itemizedoverlay=new GeoItemizedOverlay(drawable);
        //GeoPoint point=new GeoPoint(31767241, 119945000);
        GeoPoint point=new GeoPoint((int)Math.floor(location.getAltitude()*1E6), (int)Math.floor(location.getLongitude()*1E6));
        OverlayItem overlayitem=new OverlayItem(point, "", "");
        itemizedoverlay.AddOverlay(overlayitem);
        mapoverlays.add(itemizedoverlay); 
        mapcontroller.setCenter(point);
        
        mapview.setSatellite(true);
        mapview.setTraffic(true);
        mapview.setStreetView(true);
        
}另外一个是普通的activity,里面用来存放gps信息,我在这个gpsactivity里面设置的函数用来获取gps位置信息,现在得到了位置信息,请问怎么在mapview里面更新这个位置啊,直接用mapactivity.MarkPosition()不行,把这个函数设置成static说是不支持mapview=(MapView)findViewById(R.id.mapview);这个方法,请教大家,怎么才能把这个位置传递给这个mapview

解决方案 »

  1.   

    方法有很多啊,
    偏好设置
    SharedPreferences
    也可以用Intent获取数据
    当然都要onresume里面应用
      

  2.   

    1、你试试在mapactivity里定义gps信息的公共变量,通过gpsactivity获取gps位置信息后对前面的“gps信息的公共变量”进行赋值,在每次进入mapactivity时再刷新UI.
    2、或者你把每次获得的gps位置信息临时存放起来,每次进入mapactivity时度上次存放的gps位置信息
      

  3.   

            Intent intent = new Intent();   
            intent.setClass(this,getResultActivityClass());   
            Bundle mBundle = new Bundle();   
            mBundle.putString("data", record.toString());//压入数据 
            intent.putExtras(mBundle);   
            startActivity(intent);
      

  4.   


    参数少的话 就可以  使用Intent.putExtras来 传递 。。在另外一边 先获得Intent在使用getExtras取出来。。
      

  5.   

    我写了三个activity
    一个主activity
    两个标签activity
    实现tab_2给tab_1传递值
    代码:public class Test_1 extends TabActivity {
    TabHost tabHost;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //获得tabHost
            tabHost = this.getTabHost();
            //绑定tabHost和view
            LayoutInflater.from(this).inflate(R.layout.main,
             tabHost.getTabContentView(),true);
            
            Intent intentTab1 = new Intent(this,Tab_1.class);
            Intent intentTab2 = new Intent(this,Tab_2.class);
            
            
            //新建标签
            tabHost.addTab(tabHost.newTabSpec("显示便签")
             .setIndicator("显示标签")
             .setContent(intentTab1));
            
            
            tabHost.addTab(tabHost.newTabSpec("输入便签")
             .setIndicator("输入标签")
             .setContent(intentTab2));
            
        }
    }
    public class Tab_1 extends Activity{
    TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tab1);
    tv = (TextView)findViewById(R.id.textView1);
    }
    //获得数据
    @Override
    protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    SharedPreferences sharedPreferences = 
    getSharedPreferences("data", MODE_PRIVATE);
    String data = sharedPreferences.getString("data", "");
    tv.setText(data);
    }
    }
    public class Tab_2 extends Activity{
    EditText et;
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tab2);

    //获得控件控制权
    et = (EditText)findViewById(R.id.editText1);
    btn = (Button)findViewById(R.id.button1);
    btn.setOnClickListener(new View.OnClickListener() {
    //给按钮加监听,当点击时,保存信息到SharedPreferences中
    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    if(v == btn)
    {
    SharedPreferences sharedPreferences =
    getSharedPreferences("data", MODE_PRIVATE);
    sharedPreferences.edit()
    .putString("data", et.getText().toString())
    .commit();
    }
    }
    });

    }
    }有问题再说
      

  6.   

    Intent里绑定Bundle吧,这样可以的
      

  7.   

    我想到了handler,不过这个东西常用在View的更新上,你也可以用在这个地方
      

  8.   

    我是觉得用SharedPreferences就可以实现你想要的效果了,
    设置一个标识位来判断是否有数据
    如果为真,就。,处理完把标识位变为假
    如果为假,就。。