如何在Android中使用Intent传递隐藏ID?

时间:2013-08-05 06:44:41

标签: android android-intent

我有Edittext Activity&我在不同的getter setter类中设置了Edittext Id。现在我想使用intent传递Edittext id。我正在尝试创建一个getter类的对象,但是当我调用getEdittext id时,它传递0或新值。谁能告诉我这是怎么可能的。

我的代码在这里:

 case R.id.setDate:
              Intent passAddTask_Id = new Intent(getApplicationContext(), Task_Details.class);
              db = new TodoTask_Database(getApplicationContext());
              tasknote = taskNote.getText().toString();
              db.addTaskNote(tasknote, null, completed);
              AddTask addTask = new AddTask();   //Getter setter class object
              int addtask_Id = addTask.getTaskID();   //getting 0 value
              passAddTask_Id.putExtra("AddTask_Id", addtask_Id);
              startActivity(passAddTask_Id);
              break;

获得意图:

        Intent passAddTask_ID = getIntent();
        int AddtaskID = passAddTask_ID.getIntExtra("AddTask_Id", 0);

3 个答案:

答案 0 :(得分:0)

要获得该值,您必须像这样使用putExtra():

 case R.id.setDate:
              Intent passAddTask_Id = new Intent(getApplicationContext(), Task_Details.class);
              passAddTask_Id.putExtra("AddTask_Id", 11);
              db = new TodoTask_Database(getApplicationContext());
              tasknote = taskNote.getText().toString();
              db.addTaskNote(tasknote, null, completed);
              AddTask addTask = new AddTask();   //Getter setter class object
              int addtask_Id = addTask.getTaskID();   //getting 0 value
              passAddTask_Id.putExtra("AddTask_Id", addtask_Id);
              startActivity(passAddTask_Id);
              break;

来自文档here -

  

<强>返回   以前使用putExtra()添加的项的值,如果未找到&gt;则为默认值。

之后,当你使用:

Intent passAddTask_ID = getIntent();
int AddtaskID = passAddTask_ID.getIntExtra("AddTask_Id", 0);

你会得到11的结果,因为你已经使用putExtra()方法。

答案 1 :(得分:0)

您正在通过意图正确传递值。我认为你在获得传递的值时会遇到问题。试试这个,这对我有用。

您必须使用捆绑来获取值​​。

Intent intent = new Intent();
Bundle b = intent.getExtras();
    int addTaskID = b.getInt("AddTask_Id, 0);

答案 2 :(得分:0)

最后我在这里得到了答案......我需要在数据库中创建查询,在insert方法中返回long,然后调用该特定的行id。

像这样:

public long addTaskNote(String taskNote, String TaskList_Id, String taskCompleted) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_TASKNOTE, taskNote); // Task Note
    values.put(KEY_TASK_TASKLISTID, TaskList_Id); // TaskList ID
    values.put(KEY_TASKCOMPLETED, taskCompleted); // Task Completed
    // Inserting Row
    long id = db.insert(TABLE_TODOTASK, null, values);
    db.close(); // Closing database connection
    return id;    //It will give you the return value of id.
}

我的代码更改:

case R.id.setDate:
              Intent passAddTask_Id = new Intent(getApplicationContext(), Task_Details.class);
              db = new TodoTask_Database(getApplicationContext());
              tasknote = taskNote.getText().toString();
              long Addtask_id = db.addTaskNote(tasknote, null, completed);
              System.out.println(Addtask_id);
              passAddTask_Id.putExtra("AddTask_Id", Addtask_id);
              startActivity(passAddTask_Id);
              break;

在这里你可以获得运行时保存值的id。