0

我正在開發一個android應用程序,我對android環境相當陌生。我正在使用谷歌地圖,並放下一個別針。當用戶選擇一個原本隱藏的按鈕時,可以按下刪除地圖上的銷釘。但是,當屏幕旋轉(並且引腳保持選定狀態)時,刪除按鈕消失。即使在屏幕旋轉後,如何保持此按鈕可見?注意:只有當用戶在地圖上選擇了一個別針時,才能看到該按鈕。ImageButton在屏幕方向改變時消失

下面是我用設置了標記點擊監聽器的代碼:

map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
    public boolean onMarkerClick(final Marker marker) { 
     marker.showInfoWindow(); 
     currentMarker = marker; 

     deleteButton = (ImageButton) findViewById(R.id.delete_button); 
     deleteButton.setVisibility(View.VISIBLE); 

     deleteButton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       marker.remove(); 
       deleteButton.setVisibility(View.GONE); 
      } 
     }); 
     return true; 
    } 
}); 

我也覆蓋onPause()方法,以便我可以調用保存MapFragment的狀態,像這樣:

@Override 
protected void onPause() { 
    super.onPause(); 
    MapFragment mapFragment = (MapFragment) getFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.setRetainInstance(true); 
} 

所有這些代碼工作正常,除了當我旋轉設備和按鈕消失,即使標記保持選中狀態。保持此按鈕可見的最佳方式是什麼?

回答

0

不顯示的原因是因爲在旋轉設備後Activity正在重新創建;整個View層次結構將被重新創建。

此外,您在生命週期中太晚,致電mapFragment.setRetainInstance(true)。嘗試在ActivityonCreate()中撥打setRetainInstance()。理想情況下,您可以在Fragment內撥打setRetainInstance()