Best practices for integrated (context-sensitive) help?

by Nathan » Fri, 23 Apr 2010 00:56:53 GMT

Sponsored Links
 What are the best practices people have used to integrate help/tips in
their application?

One way I can think of is having html snippets in resources or assets
- perhaps as html files - maybe as formatted strings. However, I think
it would break down once an html file linked to another html file or
an image or icon.

I'm sure some of you have apps that are so wonderfully intuitive that
they don't need any help.  And I admire that. But I'm not making that
assumption for my app.

Thanks for any tips.



Best practices for integrated (context-sensitive) help?

by Nathan » Fri, 23 Apr 2010 04:57:33 GMT

 No ideas? I thought someone would have done this by now.

I've tried searching but the word 'help' is so common that a search
didn't help much.



Sponsored Links

Best practices for integrated (context-sensitive) help?

by krox » Fri, 23 Apr 2010 05:10:06 GMT


Good question, haven't really thought about it earlier but my approach
would probably be to have small buttons with a question-mark icon and
when clicked a Toast-message would display. Or perhaps using a
(Alert)Dialog instead of a Toast if a more advanced help-message is to
be displayed.


> >

Best practices for integrated (context-sensitive) help?

by ~ TreKing » Fri, 23 Apr 2010 07:11:17 GMT


Please wait more than 4 hours before bumping your own thread - especially in
the middle of a work day - as many people won't have a chance to even look
at it let alone have the time to respond that quickly.

TreKing - Chicago transit tracking app for Android-powered devices 


Best practices for integrated (context-sensitive) help?

by Michael Thomas » Fri, 23 Apr 2010 07:19:30 GMT


One way I can think of is having html snippets in resources or assets - perhaps as html files - maybe as formatted strings.
This sounds lovely. Or, just host the help online, linking to it via an ACTION_VIEW Intent on your URL. I'm not sure if the HTML5 offline stuff works with the Android browser, but if it does, use that to allow your help to be usable even when there's no connection. IMHO, this will be the long-term direction for this sort of thing, as it gives you easy publishing, easy updates independent of the app itself, yet still isn't completely busted when the user is offline.
Something that I've done is bundled stuff together as a web widget, and use that to drastically cut down on load times -- it's not for offline use, but the idea is the same. One thing that might be helpful with my approach was that I just to built the pages under a normal web server and maintain them that way. I then just use wget with some of its nice archiving facilities to suck them all back in, and zip the proceeds. If you need to maintain it as a web accessible site too, it's a big win since there's essentially only one "source tree". Works great for css and js and sprites too (which was really my big motivation) . Mike
Or, write your help in the form of an EPUB document and make it available, so those with an EPUB reader (e.g., FBReaderJ) can use it. Or, write your help in the form of a PDF document and make it available, so those with a PDF viewer (e.g., Documents To Go) can use it. And see if they have a referral program for sales, so you can make a bit of money on people who buy that app to view your help. Or, don't worry about on-device help due to form-factor issues and just provide support via your Web site.
However, I think it would break down once an html file linked to another html file or an image or icon.
Worst-case scenario: create a content provider to serve your help files.

Other Threads

1. How to set PIN code(in SIM card) ?

When I power on the device, it always appear a "input PIN(personal
identification number) code" screen. The screen has emerge call
button, ok button and number button. How to implement the function
about auto input PIN code?

Can someone give me a hint?
Thank you,
Vere Perrot


2. Search Activity / Suggestion Provider affects Parent Activity Lifecycle

Note to moderator: I originally posted this 2 days ago, never showed
up. I can only assume it was rejected for some reason although I can't
figure out what. Any info would be appreciated...thanks.

Very strange problem that is driving me crazy.

We have implemented a SearchSuggestion provider and a Search activity
in our application. The one thing about it that is very odd is that if
the SearchManager passes control to our custom Search activity, AND
that activity does not create a *visible* Activity the Activity which
parented the search does not destroy (onDestroy doesn't run) and it
will not until we call a visible Activity from the parent activity.

As long as our Search Activity fires off another Activity that gets
focus the parent activity will fire onDestroy when I back out of it.
The trick is that Activity must have a visual component. I tried to
fake it out with a 'pass through' Activity so that my Search Activity
could fire off another Intent and bail out but that didn't work

I have tried setting our SearchActivity to launch singleTop and I also
tried setting its noHistory attribute to true, tried
setResult(RESULT_OK) in SearchACtivity prior to finish, bunch of other
things, nothing is working.

This is the chunk of code in our Search Activity onCreate. Couple of
notes about it:

- If Intent is Action_Search (user typed in their own search and
didn't pick a suggestion), we display a list of results as our Search
Activity is a ListActivity. In this case when the item is picked, the
Search Activity closes and our parent Activity does fire onDestroy()
when we back out.

- If Intent is Action_View (user picked a suggestion) when type is
"action" we fire off an Intent that creates a new *visible* Activity.
In this case same thing, when we leave that new activity and return to
the parent activity, the back key does cause the parent activity to
fire onDestroy when leaving.

- If Intent is Action_View (user picked a suggestion) when type is
"pitem" is where the problem lies.
 It works fine (the method call focuses an item on the parent
activity), but when the back button
 is hit on the parent activity onDestroy is NOT called. IF after this
executes I pick an option in
 the parent activity that fires off another activity and return to
the parent then back out it will fire onDestroy()
 in the parent activity.

Note that the "action" intent ends up running the exact same method
call as "pitem", it just bring up a new visual Activity first. Also I
can take out the method call from "pitem" and just finish() and the
behavior is the same, the parent activity doesn't fire onDestroy()
when backed out of.

               if (Intent.ACTION_SEARCH.equals(queryAction)) {
                       String searchKeywords =
               } else if(Intent.ACTION_VIEW.equals(queryAction)){
                       Bundle bundle = queryIntent.getExtras();
                       String key = queryIntent.getDataString();
                       String userQuery =
                       String[] keyValues = key.split("-");

                       if(keyValues.length == 2) {
                               String type = keyValues[0];
                               String value = keyValues[1];

                               if(type.equals("action")) {
                                       Intent intent = new
Intent(this, EventInfoActivity.class);
                                       Long longKey =
                               } else
                           if(type.equals("pitem")) {
                               Integer id = Integer.parseInt(value);


It just seems like something is being held onto and I can't figure out
what it is, in all cases the Search Activity fires onDestroy() when
finish() is called so it is definitely going away.

If anyone has any suggestions I'd be most appreciative.


Sean Overby


3. ContextMenu for WebView

4. Search Activity affects Parent Activity Lifecycle

5. How to send KeyEvents through an input method service to a Dialog, or a Spinner menu?

6. how to know when a map has been completely drawn

7. onListItemClick() not getting invoked on using CustomAdapter.