Wednesday, September 21, 2011

[android-developers] Activity Help

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);
}
}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 android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment