我有一个列表,其中每个项目都是sqlite表格中的一行,我正在尝试将他们点击的项目的行ID从一个活动传递到下一个活动。 这是我试图在活动A中设置的方法,
public static final int REQUEST_CODE=0; //variable used when i want to startActivityForResult..
public void ListItemCommonIntent(long id, View view){
Log.i("Blah", "current item pressed is" + id);
Intent keypadIntent = new Intent(view.getContext(), Keypad.class);
keypadIntent.putExtra(Keypad.selectedRowId, id);
startActivityForResult (keypadIntent, REQUEST_CODE);
}
这里是我试图获取活动b中的id并将其放入selectedRowId
的地方public Long selectedRowId;
private String findBudgetQuery = "SELECT BUDGET_AMOUNT FROM CAT_BUD_TAB WHERE _ID='" + selectedRowId + "'";
public void FindBudgetForId(){
//This method should query for current budget and..
SQLiteDatabase db = budgetData.getWritableDatabase();
selectedRowId = getIntent().getLongExtra(selectedRowId, 1);
db.rawQuery(findBudgetQuery, null);
}
然而,我不能让它工作,我想我需要更多的信息,有人可以解释如何使用putExtra和获取其他内容。我想我并不完全理解偶数方法的参数。
答案 0 :(得分:4)
使用额外字段启动意图。
public void onClick(DialogInterface dialog, int id) {
Intent intent = new Intent(mContext, org.gpsagenda.DetailsContainer.class);
intent.putExtra("id", item.ID());
mContext.startActivity(intent);
}
在已启动的活动中获取额外字段。
int id = getIntent().getExtras().getInt("id");
请注意,如果没有设置Extra,你可以获得null
答案 1 :(得分:2)
putExtra和getExtra的第一个参数应该是一个字符串,用于标识您传递的信息。例如:
intent.putExtra("mySelectedRowId", rowId);
您可以使用相同的密钥稍后获取信息,第二个参数是未找到密钥时使用的默认值:
selectedId = intent.getLongExtra("mySelectedRowId", 1);