Well, I never figured it out, but while I was waiting I ended up doing
it in a cleaner way and got around my issues.

How long until I'm no longer a moderated noob???

On Dec 10, 12:04 pm, filbert <filbert...@gmail.com> wrote:
> I'm trying to customize the sample notepad app.  I want to add items
> automatically from another source (an array, a web service, whatever,
> it's hard coded right now) instead of having the user enter them.
> After the item is added to the db (via the menu), I want the item
> details to be displayed.
>
> Right now, the item is successfully added to the list, but I just get
> a blank screen.  If I hit back, the item appears in the list and if I
> click on the item in the list, I can see the details without a
> problem.
>
> The code for displaying the details after adding a new item is nearly
> identical to just displaying the details alone (except for the method
> to actually add it to the database).  Both are using the same layout
> XML (maybe that's a problem?) so I'm not sure where the breakdown is.
> Maybe I'm missing some understanding of the XML UI...
>
> The only thing I can tell that is really different is that the rowId
> is automatically added to the Intent extras when clicking on the list
> item, but not when choosing to add a new item from the menu (since the
> rowId isn't known yet).  I tried adding the rowId into the Intent
> extras, but that doesn't seem to make a difference.
>
> I tried forwarding to the View activity after adding to the DB, which
> worked, but then I had issues with the back button and figured I'd go
> with this simpler (though redundant) strategy until I can figure out
> what I'm doing wrong.
>
> Any thoughts?
>
> Here is the relevant calling code from the main class:.  It should
> look a lot like the tutorial...
> --------------------------------------------------------------------------------------------
>     @Override
>     public boolean onMenuItemSelected(int featureId, MenuItem item) {
>         switch(item.getItemId()) {
>         case REFRESH_ID:
>             refreshVerse();
>                 return true;
>         }
>
>         return super.onMenuItemSelected(featureId, item);
>     }
>
>     private void refreshVerse() {
>         Intent i = new Intent(this, VerseRefresh.class);
>         startActivityForResult(i, ACTIVITY_REFRESH);
>     }
>
>     @Override
>     protected void onListItemClick(ListView l, View v, int position,
> long id) {
>         super.onListItemClick(l, v, position, id);
>         Intent i = new Intent(this, VerseView.class);
>         i.putExtra(VerseDbAdapter.KEY_ROWID, id);
>         startActivityForResult(i, ACTIVITY_VIEW);
>     }
>
> --------------------------------------------------------------------------------------------
> And here is my Add item class (which I call refresh):
> --------------------------------------------------------------------------------------------
> public class VerseRefresh extends Activity {
>
>         private VerseDbAdapter mDbHelper;
>         private Long mRowId;
>         private TextView mVerseDate;
>         private TextView mVerseNumber;
>         private TextView mVerseText;
>
>         @Override
>         protected void onCreate(Bundle savedInstanceState) {
>                 super.onCreate(savedInstanceState);
>
>                 mDbHelper = new VerseDbAdapter(this);
>                 mDbHelper.open();
>
>                 setContentView(R.layout.verse_details);
>
>                 mVerseDate = (TextView) findViewById(R.id.verseDate);
>                 mVerseNumber = (TextView) findViewById(R.id.verseNumber);
>                 mVerseText = (TextView) findViewById(R.id.verseText);
>
>                 // since this is a new row, there will not be any id in the
> savedInstanceState.
>                 //mRowId = savedInstanceState != null ? 
> savedInstanceState.getLong
> (VerseDbAdapter.KEY_ROWID) : null;
>                 //if (mRowId == null) {
>                 //      Bundle extras = getIntent().getExtras();
>                 //      mRowId = extras != null ? extras.getLong
> (VerseDbAdapter.KEY_ROWID) : null;
>                 //}
>                 getVerse();
>
>                 Intent i = getIntent();
>                 i.putExtra(VerseDbAdapter.KEY_ROWID, mRowId);
>
>                 populateFields();
>
>         }
>
>         @Override
>         protected void onPause() {
>                 super.onPause();
>                 // not needed
>                 //saveState();
>         }
>
>         @Override
>         protected void onResume() {
>                 super.onResume();
>                 populateFields();
>         }
>
>         @Override
>         protected void onSaveInstanceState(Bundle outState) {
>                 super.onSaveInstanceState(outState);
>                 outState.putLong(VerseDbAdapter.KEY_ROWID, mRowId);
>         }
>
>         private void populateFields() {
>                 if (mRowId != null) {
>                         Cursor note = mDbHelper.fetchVerse(mRowId);
>                         startManagingCursor(note);
>                         
> mVerseDate.setText(note.getString(note.getColumnIndexOrThrow
> (VerseDbAdapter.KEY_VERSE_DATE)));
>                         
> mVerseNumber.setText(note.getString(note.getColumnIndexOrThrow
> (VerseDbAdapter.KEY_VERSE_NUMBER)));
>                         
> mVerseText.setText(note.getString(note.getColumnIndexOrThrow
> (VerseDbAdapter.KEY_VERSE_TEXT)));
>                 }
>         }
>
>         private void getVerse() {
>                 System.out.println("NEED TO CALL WEB SERVICE TO GET VALUES");
>                 // TODO call web service
>                 String verseDate = "12/10/2008";
>                 String verseNumber = "123";
>                 String verseText = "Test text 1";
>
>                 mVerseDate = new TextView(this);
>                 mVerseNumber = new TextView(this);
>                 mVerseText = new TextView(this);
>                 mVerseDate.setText(verseDate);
>                 mVerseNumber.setText(verseNumber);
>                 mVerseText.setText(verseText);
>
>                 if (mRowId == null) {
>                         long id = mDbHelper.createVerse(verseDate, 
> verseNumber, verseText);
>                         if (id > 0) {
>                                 mRowId = id;
>                         }
>                 }
>                 else {
>                         System.out.println("NO ID. THIS SHOULDN'T HAPPEN 
> UNLESS THERE IS A
> DB ERROR");
>                         // TODO don't need this anymore?
>                         //mDbHelper.updateVerse(mRowId, verseDate, 
> verseNumber);
>                 }
>
>         }
>
> }
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
To post to this group, send email to android-beginners@googlegroups.com
To unsubscribe from this group, send email to
android-beginners-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to