8

仍在努力提高我在 android 上的技能。

我的问题是我的数据库中有一个标签,其中包含一个微调器中的名称,当我单击标签时,会出现一个对话框并为您提供三个选择: 1. 更新。2. 删除。3.取消。我通过了第二个和第三个选择,但在更新中遇到了这个问题;我转到另一个具有editText和2个按钮的活动,保存并取消,我希望保存按钮从putExtra中的editText获取数据并将其发送回相同的先前活动并使用来自的数据更改旧标签编辑文本。

我很感激任何帮助。提前致谢。

4

3 回答 3

16

在您的第二个活动中,您可以使用该方法从第一个活动中获取数据getIntent(),然后getStringExtra()getIntExtra()...

然后要返回您的第一个活动,您必须使用setResult()带有意图数据的方法作为参数返回。

要在第一个活动中从第二个活动中获取返回数据,只需覆盖该onActivityResult()方法并使用意图来获取数据。

第一个活动:

//In the method that is called when click on "update"
Intent intent = ... //Create the intent to go in the second activity
intent.putExtra("oldValue", "valueYouWantToChange");
startActivityForResult(intent, someIntValue); //I always put 0 for someIntValue

//In your class
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //Retrieve data in the intent
    String editTextValue = intent.getStringExtra("valueId");
}

第二个活动:

//When activity is created
String value = intent.getStringExtra("oldValue");
//Then change the editText value

//After clicking on "save"
Intent intent = new Intent();
intent.putExtra("valueId", value); //value should be your string from the edittext
setResult(somePositiveInt, intent); //The data you want to send back
finish(); //That's when you onActivityResult() in the first activity will be called

不要忘记使用该startActivityForResult()方法开始您的第二个活动。

于 2012-11-01T13:40:47.007 回答
6

您必须将信息作为附加信息传递。

传递信息

Intent i = new Intent();
i.setClassName("com.example", "com.example.activity");
i.putExtra("identifier", VALUE);
startActivity(i);

获取信息

Bundle extras = getIntent().getExtras();
String exampleString = extras.getString("identifier");
于 2012-11-01T13:31:06.667 回答
1

当您想开始第二个活动时,startActivityForResult(your intent, request code); 请在您的第一个活动中使用

protected void onActivityResult(int requestCode, int resultCode,
             Intent data) {
         if (requestCode == your_reques_code) {
             if (resultCode == RESULT_OK) {
                 // do your stuff           
             }
         }
}

在完成第二个活动之前不要忘记这一点,

Intent data = new Intent();
data.putExtra("text", edtText.getText());
setResult(RESULT_OK, data); 
于 2012-11-01T13:35:32.593 回答