在处理意图时如何使用putExtra / get_Extra?

时间:2010-12-15 16:44:04

标签: java android parameters android-intent

我有一个列表,其中每个项目都是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和获取其他内容。我想我并不完全理解偶数方法的参数。

2 个答案:

答案 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);