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);
}
}