Reputation: 43
Having some trouble passing values from one class to another. I basically have a Timetable class from which I want to send a value to another class called daytab. The value I want to pass through is called day. I've attempted to pass it through using intent.putExtra() but it's either not sending the value or not receiving it. It's supposed to store the received variable in the String daynew in daytab.java
Timetable.java:
package day.tab;
import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.TabHost;
public class Timetable extends TabActivity {
private static final String EXTRA_DAY = "EXTRA_DAY";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, daytab.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("Monday").setIndicator("Mon",
res.getDrawable(R.drawable.ic_tab_artists))
.setContent(intent);
intent.putExtra(EXTRA_DAY, "monday");
tabHost.addTab(spec);
// Do the same for the other tabs
intent = new Intent().setClass(this, daytab.class);
spec = tabHost.newTabSpec("Tuesday").setIndicator("Tue",
res.getDrawable(R.drawable.ic_tab_artists))
.setContent(intent);
intent.putExtra(EXTRA_DAY, "tuesday");
tabHost.addTab(spec);
intent = new Intent().setClass(this, daytab.class);
spec = tabHost.newTabSpec("Wednesday").setIndicator("Wed",
res.getDrawable(R.drawable.ic_tab_artists))
.setContent(intent);
intent.putExtra(EXTRA_DAY, "wednesday");
tabHost.addTab(spec);
intent = new Intent().setClass(this, daytab.class);
spec = tabHost.newTabSpec("Thursday").setIndicator("Thur",
res.getDrawable(R.drawable.ic_tab_artists))
.setContent(intent);
intent.putExtra(EXTRA_DAY, "thursday");
tabHost.addTab(spec);
intent = new Intent().setClass(this, daytab.class);
spec = tabHost.newTabSpec("Friday").setIndicator("Fri",
res.getDrawable(R.drawable.ic_tab_artists))
.setContent(intent);
intent.putExtra(EXTRA_DAY, "friday");
tabHost.addTab(spec);
intent = new Intent().setClass(this, daytab.class);
intent.putExtra(EXTRA_DAY, "saturday");
spec = tabHost.newTabSpec("Saturday").setIndicator("Sat",
res.getDrawable(R.drawable.ic_tab_artists))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, daytab.class);
spec = tabHost.newTabSpec("Sunday").setIndicator("Sun",
res.getDrawable(R.drawable.ic_tab_artists))
.setContent(intent);
intent.putExtra(EXTRA_DAY, "sunday");
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
}
}
daytab.java.EXTRA_DAY:
package day.tab;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class daytab extends ListActivity {
private static final int ACTIVITY_CREATE=0;
private static final int ACTIVITY_EDIT=1;
private static final int INSERT_ID = Menu.FIRST;
private static final int DELETE_ID = Menu.FIRST + 1;
private String daynew;
private NotesDbAdapter mDbHelper;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.notes_list);
daynew = getIntent().getStringExtra("EXTRA_DAY");
mDbHelper = new NotesDbAdapter(this);
mDbHelper.open();
fillData();
registerForContextMenu(getListView());
String[] hour = getResources().getStringArray(R.array.hours);
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, hour));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
mDbHelper.open();
fillData();
registerForContextMenu(getListView());
}
});
}
/** Called when the activity is first created. */
private void fillData() {
// Get all of the rows from the database and create the item list
Cursor notesCursor = mDbHelper.fetchAllNotes(daynew);
startManagingCursor(notesCursor);
// Create an array to specify the fields we want to display in the list (only TITLE)
String[] from = new String[]{NotesDbAdapter.KEY_TITLE};
// and an array of the fields we want to bind those fields to (in this case just text1)
int[] to = new int[]{R.id.text1};
// Now create a simple cursor adapter and set it to display
SimpleCursorAdapter notes =
new SimpleCursorAdapter(this, R.layout.notes_row, notesCursor, from, to);
setListAdapter(notes);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, INSERT_ID, 0, R.string.menu_insert);
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch(item.getItemId()) {
case INSERT_ID:
createNote();
return true;
}
return super.onMenuItemSelected(featureId, item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, DELETE_ID, 0, R.string.menu_delete);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()) {
case DELETE_ID:
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
mDbHelper.deleteNote(info.id);
fillData();
return true;
}
return super.onContextItemSelected(item);
}
private void createNote() {
Intent i = new Intent(this, NoteEdit.class);
startActivityForResult(i, ACTIVITY_CREATE);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Intent i = new Intent(this, NoteEdit.class);
i.putExtra(NotesDbAdapter.KEY_ROWID, id);
startActivityForResult(i, ACTIVITY_EDIT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
fillData();
}
}
AndroidManifest.xml:
<activity android:name=".Timetable" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".NoteEdit"></activity> <activity android:name=".daytab"> <intent-filter> <action android:name="aexp.Timetable.add"></action> <category android:name="android.intent.category.LAUNCHER"></category> </intent-filter>
Thanks in advance for any help!!
Upvotes: 4
Views: 1171
Reputation: 77722
I don't see where you initialize the string day
?
Side note - I would a) make its name all upper-case, because it's a constant (EXTRA_DAY, for example), and b) mark it static final.
Upvotes: 2