For the OI Notepad (which is based on Google's sample notepad
application), we set the intent action manually from INSERT to EDIT,
once it has been created. This way, it is not inserted multiple times
on screen orientation changes.

http://code.google.com/p/openintents/source/browse/trunk/NotePad/src/org/openintents/notepad/NoteEditor.java

I don't know if this is the cleanest way of doing things though,
because we have to keep additional state information that the note was
originally inserted...

There may be a more elegant way to achieve the same result.

Peli
www.openintents.org


On Nov 25, 5:50 am, j <[EMAIL PROTECTED]> wrote:
> If user chooses "Add note", the editor activity launches.
>
> Now if user slide out/in the keyboard, each time orientation changes,
> onCreate gets called so a new row is inserted into the database, which
> is obviously not desirable.
>
>     protected void onCreate(Bundle savedInstanceState) {
>         super.onCreate(savedInstanceState);
>
>         final Intent intent = getIntent();
>
>         // Do some setup based on the action being performed.
>
>         final String action = intent.getAction();
>         if (Intent.ACTION_EDIT.equals(action)) {
>             // Requested to edit: set that state, and the data being
> edited.
>             mState = STATE_EDIT;
>             mUri = intent.getData();
>         } else if (Intent.ACTION_INSERT.equals(action)) {
>             // Requested to insert: set that state, and create a new
> entry
>             // in the container.
>             mState = STATE_INSERT;
>             mUri = getContentResolver().insert(intent.getData(),
> null);
>
>             // If we were unable to create a new note, then just
> finish
>             // this activity.  A RESULT_CANCELED will be sent back to
> the
>             // original activity if they requested a result.
>             if (mUri == null) {
>                 Log.e(TAG, "Failed to insert new note into " +
> getIntent().getData());
>                 finish();
>                 return;
>             }
>
>             // The new entry was created, so assume all will end well
> and
>             // set the result to be returned.
>             setResult(RESULT_OK, (new Intent()).setAction(mUri.toString
> ()));
>
>         } else {
>             // Whoops, unknown action!  Bail.
>             Log.e(TAG, "Unknown action, exiting");
>             finish();
>             return;
>         }
>
>         // Set the layout for this activity.  You can find it in res/
> layout/note_editor.xml
>         setContentView(R.layout.note_editor);
>
>         // The text view for our note, identified by its ID in the XML
> file.
>         mText = (EditText) findViewById(R.id.note);
>
>         // Get the note!
>         mCursor = managedQuery(mUri, PROJECTION, null, null, null);
>
>         // If an instance of this activity had previously stopped, we
> can
>         // get the original text it started with.
>         if (savedInstanceState != null) {
>             mOriginalContent = savedInstanceState.getString
> (ORIGINAL_CONTENT);
>         }
>     }
>
> What is the correct (best practice) code to avoid a second (or third)
> record from being inserted?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to