This question is simple. There are for example 2 activities Main Activity and Main Activity 2. How can I send string(for example) from Main Activity to Main Activity 2. Let's say if Main Activity 2 gets string. It calls a function to change that string. And then how to send that changed string back to Main Activity?
- 
                    1You return it as part of the result intent – Gabe Sechan Apr 21 '16 at 21:00
2 Answers
The Standard Way:
If you want to send a primitive data from Activity1 to Activity2, you need to use Intent. For example if you just want to send a String:
public class Activity1 extends Activity {
   public static final String EXTRA_STRING = "extra_string";
   private void sendString(String s) {
        Intent intent = new Intent(this, Activity2.class);
        intent.putExtra(EXTRA_STRING, s);
        startActivity(intent);
   }
}
Suppose you change that string in Activity2 and also want the result back to Activity1, you need to use startActivityForResult() in Activity1 and setResult() in Activty2.
For example:
public class Activity1 extends Activity {
   public static final String EXTRA_STRING = "extra_string";
   private static final int REQUEST_CODE = 1;
   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {    
       if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
           // Get the string back
           String changedString = data.getStringExtra(Activity2.EXTRA_STRING);
       }
   }
   private void sendString(String s) {
        Intent intent = new Intent(this, Activity2.class);
        intent.putExtra(EXTRA_STRING, s);
        startActivityForResult(intent, REQUEST_CODE);
   }
}
In Activity2:
public class Activity2 extends Activity {
    public static final String EXTRA_STRING = "string_extra";
    private String myString;
    @Override
    public void onCreate(Bundle bundle) {
         // receive the string from activity1
         if (getIntent() != null) {
              myString = getIntent().getStringExtra(Activity1.EXTRA_STRING);
         }  
    }
    // Send the string back to activity1
    private void sendBack() {
        Intent data = new Intent();
        data.putExtra(EXTRA_STRING, myString);
        setResult(RESULT_OK, data);
        finish();
    }
}
The downside of the method is you can only send primitive variable. If you want to send an object, it must implements Parcelable or Serializable.
The Quick and Easy Way:
You can send variable of any kind, any complicated object between activity, service or whatever you want using EventBus. Please take a look at the Documentation to know how to use it. It's really quick and easy.
 
    
    - 704
- 6
- 10
From Main activity 1 send the string:
                Intent intent = new Intent(this, MainActivity2);
                intent.putExtra("string", stringVal);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
Then in Main Activity 2, receive the string:
String str = getIntent().getExtras().getString("string");
Then just change the value and send it back to Main Activity 1, you could get the intent within the onResume if you want, but check for nulls.
 
    
    - 2,704
- 1
- 24
- 37
- 
                    So when Main Activity 2 receive the string and make some changes to it. I can send it back to Main Activity activity by using similar code that you wrote above, just changing MainActivity2 to MainActivty and to change value of putExtra()? – Apr 21 '16 at 22:05
- 
                    
- 
                    This works, but it's not quiet what I'm looking for. I was not being specific enough in question and sorry for that. Actually what I want is to stay on layout page of Main Activity than to send string to Main activity 2 without Main Activity 2 and it's layout pop up on my device. Long story short, Main Activity 2 receives string and device always stays on Main Activity layout. Main Activity 2 changes string(let's say just replace 2 letters) and it sends string back to Main Activity where I can actually see changes(in Text View for example). – Apr 21 '16 at 23:00
- 
                    Do you need an activity for that? Why not use a service or a class? What's the use case of using an activity? In that case you could possibly just have a public method that inputs a string and returns a string. But I don't know if that's good practive – Ushal Naidoo Apr 22 '16 at 01:20