Over a million developers have joined DZone.

Roman Nurik on "Done + Discard"

DZone's Guide to

Roman Nurik on "Done + Discard"

· Mobile Zone ·
Free Resource
Roman Nurik posted a very interesting discussion topic to the Google+ today (In case you're not yet on Google+ and are not following Roman you should join and add him right now!).

This is a problem that is not easy to solve and is plaguing many apps on the Google Play today. On screens where users edit data users have multiple ways to leave the screen. Even one of my all time favourite apps,  Tasks, suffer from this. The Tasks app has done the right thing and set the defaults in a way that it is very difficult for users to accidentally lose their changes (up and back both save the changes).

Another one of my favourite app, Evernote, solves this issue with a pop-up. I hate popups. I would like to see them all removed from all systems forever. I'm not fan of the Evernote's solution.

Roman's suggestion is to use something similar to the contextual action bar and remove the up button (and the other controls as well) to clear possible confusion. While this solution does solve some of the issues it still leaves the back button. It also limits the number of actions available on the action bar.

Here are few screenshots from the Roman's post:

He has also built an example app which you can use as basis for implementation and experimentation. You can find the source code from this Google Code repository.

Join the Conversation

As already mentioned, this isn't an easy problem to solve. I'm not fully sold on the done + discard even though it will most likely be a good solution in many places. What do you think? How would you solve this issue?

Please join the conversation on the Roman's post on Google+!

Read Roman's post about undo bar as well! He posted example code for gmail-style undo bar here.

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}