È davvero strano. La prima volta che avvio l'applicazione in eclipse e chiamo startActionMode, tutto funziona correttamente. Se chiudo l'app e la riapre, startActionMode restituisce null. Resterà sempre nullo fino a quando non avrò cambiato qualcosa nell'app ed eseguirlo di nuovo da Eclipse. Nella documentazione, dice che startActionMode restituisce null se è stato cancellato, ma non spiega perché è stato cancellato.startActionMode restituisce null
Qualche idea? btw, `m utilizzando ActionBarSherlock
UPDATE: se mi arresto il mio telefono o uccidere l'applicazione e iniziare di nuovo l'applicazione, funziona ... ma poi fa la stessa cosa quando io lo chiudo e apro di nuovo.
ecco il mio codice: classe ActionModeCallback:
class ActionModeCallback implements ActionMode.Callback{
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.contextactiondownloads, menu);
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
}
};
Nel mio mainactivity:
public ActionMode startActionMode()
{
mActionMode = startActionMode(new ActionModeCallback());
return mActionMode;
}
Nel mio adattatore ListView:
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
MainActivity activity = (MainActivity)rowView.getContext();
if (isChecked) {
if(actionmode == null){
actionmode = activity.startActionMode();
}else
{
actionmode.invalidate();
}
}
else {
activity.finishActionMode();
actionmode=null;
}
}
});
Dove esattamente nella tua attività stai chiamando startActionMode()? – Christos
L'ho chiamato dal mio adattatore listview, guarda il codice sopra: actionmode = activity.startActionMode(); –
È l'ActionBar nativo o compatibile (si tratta di dispositivo ICS o superiore?). Se è quella nativa, questa riga dei documenti ufficiali potrebbe applicarsi a te - 'restituisce il ContextMode che era stato avviato, o null se è stato cancellato' – Delyan