1

Я использую метод Android onRestoreInstanceState android, чтобы получить информацию, когда экран вращается, и он отлично работает, за исключением одной вещи.MenuItem setVisible on onRestoreInstanceState

Когда я пытаюсь установить видимую в MENUITEM, которые инициализированы в onCreateOptionsMenu, он получает NullPointerException и очень важно для funcionality, что элемент apearrs

Кто-нибудь знает, как это исправить?

Большое спасибо за помощь

Мой метод инициализировать элемент

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater menuInflater = getMenuInflater(); 
    menuInflater.inflate(R.menu.map, menu); 
    itemClean = menu.findItem((R.id.map_clear_lines)); 
    return true; 

} 

Мой метод восстановления информации

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    mapa.moveCamera(CameraUpdateFactory.newLatLngZoom(
    (LatLng)savedInstanceState.getParcelable(MapConstants.MAP_CAMERA_LATLNG), 
      savedInstanceState.getFloat(MapConstants.MAP_CAMERA_ZOOM))); 
    if(savedInstanceState.getBoolean(MapConstants.MAP_TYPE)){ 
     stateSatelitalMap(); 
     } 

    if(savedInstanceState.containsKey(MapConstants.ROUTES_START)){ 
     LatLng starLatLng = savedInstanceState.getParcelable(MapConstants.ROUTES_START); 
     LatLng finishLatLng = savedInstanceState.getParcelable(MapConstants.ROUTES_END); 

     markerStart = mapa.addMarker(new MarkerOptions().position(starLatLng).icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_inici_fin)) 
       .title(getResources().getString(R.string.marker_confirm_start)).snippet(getResources().getString(R.string.snippet_confirm_start))); 

     markerFinish = mapa.addMarker(new MarkerOptions().position(finishLatLng).icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_inici_fin)) 
       .title(getResources().getString(R.string.marker_confirm_end)).snippet(getResources().getString(R.string.snippet_confirm_end))); 

     getRoute(starLatLng, finishLatLng); 
     booleanEndConfirmed = true; 
     booleanStartConfirmed = true; 
     itemClean.setVisible(true); 
    } 

все работает нормально, за исключением последней строки, в MENUITEM не вызывайте проблем, когда я использую его без вращения экрана

+2

Есть ли причина, почему вы как раз не установить переменную-член, а затем использовать, чтобы установить видимость в onPrepareOptionsMenu? –

+0

Я хотел сделать это напрямую, но это решение, в onRestoreInstanceState установили глобальную переменную и в onCreateOptionsMenu попросили его и сделали. благодаря –

ответ

0

Followin г Тима Рекомендации для Баранина, я создал глобальную переменную и выставиться в OnCreateMenuOptions

private boolean booleanItemVisible = false; 


@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
... 
booleanItemVisible = true; 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    ... 
    itemClean.setVisible(booleanItemVisible); 
    return true; 
} 
Смежные вопросы