将值从一个类传递到另一个类时遇到一些问题。我基本上有一个 Timetable 类,我想从中将一个值发送到另一个名为 daytab 的类。 我要传递的值称为天。我试图通过使用 intent.putExtra() 来传递它,但它要么不发送值,要么不接收它。 它应该将接收到的变量存储在 daytab.java 中的字符串 daynew 中
时间表.java:
package day.tab;<p></p>
<p>import android.app.TabActivity;</p>
<p>import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.TabHost;</p>
<p>public class Timetable extends TabActivity {</p>
<pre><code>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);
}
</code></pre>
<p>}
</p>
daytab.java.EXTRA_DAY:
package day.tab;<p></p>
<p>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;</p>
<p>public class daytab extends ListActivity {</p>
<pre><code>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();
}
</code></pre>
<p>}
</p>
安卓 list .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>
在此先感谢您的帮助!!
最佳答案
我没看到你在哪里初始化字符串 day
?
旁注 - 我会 a) 将其名称全部大写,因为它是一个常量(例如 EXTRA_DAY),并且 b) 将其标记为 static final。
关于java - 无法使用 Intent 获取传递的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4330264/