Hello all,

I have an issue where my activity has a spinner up top to change the 
listview below it with data from the sqlite database. Using this activity 
everything works fine. However, when I click on one of the list items it 
runs the next activity intent and after this new activity finishes loading 
(layout and java file completes) it throws a nullPointerException.

If I comment out my spinner and default the list to a number that the 
spinner would pass in and click on the list item, the next activity works 
just fine with no errors. This makes me believe it has something to do with 
my spinner and how it closes out or something. Honestly I have no idea and I 
cannot figure out why it throws this error.

Is there anything wrong with my code? Please, any and all help would be 
greatly appreciated!

Thanks in advance,
Derek

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
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
package com.myMinistry.gui;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;

import com.myMinistry.R;
import com.myMinistry.db.LiteratureNameColumns;
import com.myMinistry.db.LiteratureTypeColumns;
import com.myMinistry.db.MinistryDatabase;
import com.myMinistry.models.LiteratureName;

public class LiteratureEditor extends Activity {
	private MinistryDatabase database;
	private LiteratureName _literatureName = new LiteratureName();
	private EditText literatureTitle;
	private Spinner literatureTypes;
	private int literatureNameID = 0;
	private int position = 0;

	@Override
	public void onResume() {
    	super.onResume();
    	fetchLiteratureTypes();
    }
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);
    	Bundle extras = getIntent().getExtras();
    	setContentView(R.layout.literature_editor);

    	if(extras != null) {
	    	Object[] keys = extras.keySet().toArray();
	    	
	    	for(int i = 0; i < keys.length; i++) {
	    		if(keys[i].toString().equals("literatureNameID"))
	    			literatureNameID = extras.getInt("literatureNameID");
	    		if(keys[i].toString().equals("position"))
	    			position = extras.getInt("position");
	    	}
	    }
    	
    	database = new MinistryDatabase(this);
    	database.open();
    	
    	if(literatureNameID > 0) {
    		Cursor record = database.fetchRecord(MinistryDatabase.LIT_NAMES_TABLE_NAME, new String[] {LiteratureNameColumns._ID,LiteratureNameColumns.PUBLISHER_ID,LiteratureNameColumns.NAME,LiteratureNameColumns.TYPE_ID,LiteratureNameColumns.ACTIVE,LiteratureNameColumns.COUNT_WEIGHT,LiteratureNameColumns.SORT_ORDER}, LiteratureNameColumns._ID, literatureNameID);
    		if(record.moveToFirst())
    			_literatureName = new LiteratureName(record);
    	}
    	
    	literatureTypes = (Spinner) findViewById(R.id.literatureTypes);
    	literatureTitle = (EditText) findViewById(R.id.literatureTitle);
    	literatureTitle.setText(_literatureName.getName());
    	
    	findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				finish();
			}
		});
    	
    	findViewById(R.id.save).setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				if(literatureTitle.getText().length() > 0) {
					_literatureName.setName(literatureTitle.getText().toString());
					_literatureName.save();
			        finish();
				}
				// Failure
				else
					literatureTitle.setError("Please enter a title.");
			}
		});
    }
	
	private void fetchLiteratureTypes(){
		Cursor litTypes = database.fetchRecords(MinistryDatabase.LIT_TYPES_TABLE_NAME, null, LiteratureTypeColumns.ACTIVE + "=1", null, null, null, LiteratureTypeColumns.SORT_ORDER + "," + LiteratureTypeColumns.NAME, null);
    	SimpleCursorAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, litTypes, new String[] {LiteratureTypeColumns.NAME}, new int[]{android.R.id.text1});
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		literatureTypes.setAdapter(adapter);
		literatureTypes.setOnItemSelectedListener( new litTypeSelector() );
		literatureTypes.setSelection(position);
	}
	
    public class litTypeSelector implements OnItemSelectedListener {
		public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
			_literatureName.setTypeID((int)id);
			position = pos;
		}
		public void onNothingSelected(AdapterView<?> parent) {
			// Do nothing.
		}
	}
}
package com.myMinistry.gui;

import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;

import com.myMinistry.R;
import com.myMinistry.db.LiteratureNameColumns;
import com.myMinistry.db.LiteratureTypeColumns;
import com.myMinistry.db.MinistryDatabase;

public class LiteratureManager extends ListActivity {
    private MinistryDatabase database;
	private int literatureTypeID = 0;
	
	@Override
	public void onResume() {
    	super.onResume();
		fillData();
    }
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.literature_manager);
    	database = new MinistryDatabase(this);
    	database.open();
    	
    	Spinner literatureTypes = (Spinner) findViewById(R.id.literatureTypes);

		Cursor litTypes = database.fetchRecords(MinistryDatabase.LIT_TYPES_TABLE_NAME, null, LiteratureTypeColumns.ACTIVE + "=1", null, null, null, LiteratureTypeColumns.SORT_ORDER + "," + LiteratureTypeColumns.NAME, null);
    	SimpleCursorAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, litTypes, new String[] {LiteratureTypeColumns.NAME}, new int[]{android.R.id.text1});
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		literatureTypes.setAdapter(adapter);
		literatureTypes.setSelection(0);
		literatureTypes.setOnItemSelectedListener(
			new OnItemSelectedListener() {
                public void onItemSelected(AdapterView<?> parent, View newview, int newposition, long newID) {
                	if(literatureTypeID != (int)newID) {
        				literatureTypeID = (int)newID;
        				fillData();
        			}
                }
                public void onNothingSelected(AdapterView<?> parent) {
                	// Do nothing.
                }
            }
		);
	}

	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        Intent intent = new Intent(this, LiteratureEditor.class);
        intent.putExtra("literatureNameID", (int)id);
        intent.putExtra("position", position);
        startActivity(intent);
    }
	
	private void fillData() {
		Cursor litNames = database.fetchLiterature(literatureTypeID, "active");
		startManagingCursor(litNames);
    	SimpleCursorAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), android.R.layout.simple_list_item_1, litNames, new String[] {LiteratureNameColumns.NAME}, new int[]{android.R.id.text1});
    	setListAdapter(adapter);
    }
}

Reply via email to