@Override
 public boolean onCreateOptionsMenu(Menu menu) {
   super.onCreateOptionsMenu(menu);
   menu.add(0, OPTION_MENU_CLEAR_STATUSES_ID, 0, getResources().getText(R.string.clear_statuses))
       .setIcon(android.R.drawable.ic_menu_close_clear_cancel);
   return true;
 }
 @Override
 protected void onSaveInstanceState(Bundle outState) {
   super.onSaveInstanceState(outState);
   StatusMode statusMode = (StatusMode) statusModeView.getSelectedItem();
   outState.putString(SAVED_MODE, statusMode.name());
   outState.putString(SAVED_TEXT, statusTextView.getText().toString());
 }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (isFinishing()) return;
    onInflate(savedInstanceState);
    if (isFinishing()) return;
    Collection<String> groups;
    Collection<String> selected;
    if (savedInstanceState != null) {
      groups = savedInstanceState.getStringArrayList(SAVED_GROUPS);
      selected = savedInstanceState.getStringArrayList(SAVED_SELECTED);
    } else {
      groups = getInitialGroups();
      selected = getInitialSelected();
    }

    listView = getListView();
    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    listView.setOnItemClickListener(this);
    arrayAdapter =
        new ArrayAdapter<>(
            this, android.R.layout.simple_list_item_multiple_choice, new ArrayList<String>());
    LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.add_item, listView, false);
    ((TextView) view.findViewById(android.R.id.message)).setText(R.string.group_add);
    listView.addFooterView(view, null, true);
    setListAdapter(arrayAdapter);
    setGroups(groups, selected);
  }
 @Override
 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
   super.onCreateContextMenu(menu, v, menuInfo);
   AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
   actionWithItem = (SavedStatus) getListView().getItemAtPosition(info.position);
   if (actionWithItem == null) // Header
   return;
   menu.add(0, CONTEXT_MENU_SELECT_STATUS_ID, 0, getResources().getText(R.string.select_status));
   menu.add(0, CONTEXT_MENU_EDIT_STATUS_ID, 0, getResources().getText(R.string.edit_status));
   menu.add(0, CONTEXT_MENU_REMOVE_STATUS_ID, 0, getResources().getText(R.string.remove_status));
 }
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
   super.onOptionsItemSelected(item);
   switch (item.getItemId()) {
     case OPTION_MENU_CLEAR_STATUSES_ID:
       AccountManager.getInstance().clearSavedStatuses();
       ((UpdatableAdapter) getListAdapter()).onChange();
       return true;
   }
   return false;
 }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (isFinishing()) return;

    actionWithItem = null;

    setContentView(R.layout.status_editor);

    Intent intent = getIntent();
    account = StatusEditor.getAccount(intent);
    if (account == null) setTitle(getString(R.string.status_editor));
    else
      setTitle(
          getString(
              R.string.status_editor_for, AccountManager.getInstance().getVerboseName(account)));

    ListView listView = getListView();
    LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
    View header = inflater.inflate(R.layout.status_editor_header, listView, false);
    listView.addHeaderView(header, null, false);
    listView.setOnItemClickListener(this);
    registerForContextMenu(listView);
    setListAdapter(new StatusEditorAdapter(this));

    statusTextView = (EditText) header.findViewById(R.id.status_text);
    statusModeView = (Spinner) header.findViewById(R.id.status_mode);
    statusModeView.setAdapter(new StatusModeAdapter(this));
    ((Button) findViewById(R.id.ok)).setOnClickListener(this);

    StatusMode statusMode;
    String statusText;
    if (savedInstanceState == null) {
      if (account == null) {
        statusMode = SettingsManager.statusMode();
        statusText = SettingsManager.statusText();
      } else {
        AccountItem accountItem = AccountManager.getInstance().getAccount(account);
        if (accountItem == null) {
          Application.getInstance().onError(R.string.NO_SUCH_ACCOUNT);
          finish();
          return;
        }
        statusMode = accountItem.getFactualStatusMode();
        statusText = accountItem.getStatusText();
      }
    } else {
      statusMode = StatusMode.valueOf(savedInstanceState.getString(SAVED_MODE));
      statusText = savedInstanceState.getString(SAVED_TEXT);
    }
    showStatus(statusMode, statusText);
  }
 @Override
 public boolean onContextItemSelected(MenuItem item) {
   super.onContextItemSelected(item);
   switch (item.getItemId()) {
     case CONTEXT_MENU_SELECT_STATUS_ID:
       setStatus(actionWithItem.getStatusMode(), actionWithItem.getStatusText());
       finish();
       return true;
     case CONTEXT_MENU_EDIT_STATUS_ID:
       showStatus(actionWithItem.getStatusMode(), actionWithItem.getStatusText());
       return true;
     case CONTEXT_MENU_REMOVE_STATUS_ID:
       AccountManager.getInstance().removeSavedStatus(actionWithItem);
       ((UpdatableAdapter) getListAdapter()).onChange();
       return true;
   }
   return false;
 }
 @Override
 protected void onResume() {
   super.onResume();
   ((UpdatableAdapter) getListAdapter()).onChange();
 }
 @Override
 protected void onSaveInstanceState(Bundle outState) {
   super.onSaveInstanceState(outState);
   outState.putStringArrayList(SAVED_GROUPS, getGroups());
   outState.putStringArrayList(SAVED_SELECTED, getSelected());
 }