0

我有 Edittext Activity 并且我在不同的 getter setter 类中设置了 Edittext Id。现在我想使用意图传递 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);
4

3 回答 3

0

最后我在这里得到了答案......我需要在数据库中创建查询,在插入方法中返回 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 保存的值。

于 2013-08-05T09:47:08.273 回答
0

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

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

Intent intent = new Intent();
Bundle b = intent.getExtras();
    int addTaskID = b.getInt("AddTask_Id, 0);
于 2013-08-05T08:45:49.370 回答
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;

这里的文档-

返回 先前使用putExtra()添加的项目的值,如果没有找到,则返回默认值。

之后,当您使用时:

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

您将得到 11 的结果,因为您已将其放入putExtra()方法。

于 2013-08-05T07:15:56.253 回答