8

Still working on my skills in android.

My problem here is that i have a label from my database that contain a name that is in a spinner, when i click on the label, a dialog comes and give you three choices: 1. update. 2. delete. 3. cancel. I got through the second and the third choices, but in the update am facing this problem; i go to another activity that has an editText and the 2 Buttons, save and cancel, i want the save button to get the data from the editText in putExtra and send it back to the same previous activity and change the old label with the data from the editText.

I appreciate any help. Thanks in advance.

4

3 に答える 3

16

2 番目のアクティビティでは、メソッドgetIntent()を使用して最初のアクティビティからデータを取得してからgetStringExtra()getIntExtra()...

次に、最初のアクティビティに戻るにsetResult()は、インテント データを含むメソッドを使用してパラメーターとして返す必要があります。

最初のアクティビティで 2 番目のアクティビティから返されるデータを取得するには、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");
}

2 番目のアクティビティ:

//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

メソッドで 2 番目のアクティビティを開始することを忘れないでください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

2番目のアクティビティを開始する場合は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           
             }
         }
}

2番目のアクティビティを終了する前に、これを忘れないでください。

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