0

So I'm really confused right now. I have two activities: MainActivity and Main2Activity. I change a value in MainActivity of a textview to "clicked". Then I want to call Main2Activity, change something in there and go back to MainActivity. When I'm going back to MainActivity i want the state to be as I called Main2Activity. How do i get back to the state from MainActivity when I left (=> textview should say "clicked" and not "hello world" as defined in XML)? Here is my code so far: MainActivity:

 package com.plabsproject.testapp; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private Button btn1; private TextView textanzeige; @Override protected void onCreate(Bundle savedInstanceState) { if (savedInstanceState == null) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button) findViewById(R.id.button1); btn1.setOnClickListener(btnListener); textanzeige = (TextView) findViewById(R.id.helloworld); textanzeige.setOnClickListener(btnListener); } else if (savedInstanceState != null){ Toast.makeText(this, "Test", Toast.LENGTH_SHORT).show(); } } private View.OnClickListener btnListener = new View.OnClickListener() { @Override public void onClick(View view) { if (view == btn1) { Intent wechselActivity = new Intent(view.getContext(), Main2Activity.class); startActivity(wechselActivity); finish(); } else if (view == textanzeige) { TextView ändereText = (TextView) findViewById(R.id.helloworld); ändereText.setText("clicked"); } } }; } 

and Main2Activity:

 package com.plabsproject.testapp; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class Main2Activity extends AppCompatActivity { private Button btn1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); btn1 = (Button) findViewById(R.id.Activity2_Button); btn1.setOnClickListener(zurück_zur_Activty_1); } private View.OnClickListener zurück_zur_Activty_1 = new View.OnClickListener() { @Override public void onClick(View view) { if (view == btn1){ Intent wechselActivity = new Intent(view.getContext(), MainActivity.class); wechselActivity.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY); startActivity(wechselActivity); finish(); } } }; } 

I think, that this problem is somehow related to the setFlags, but for some reasons, it doesn't work as expected.

Thank you!

1 Answer 1

2

Instead of calling startActivity() you can use startActivityForResult() in MainActivity, but don't call finish() in main activity.

Then in Main2Activity set the result by calling setResult(), which will return to the MainActivity.

For more details you can visit the site https://developer.android.com/training/basics/intents/result.html

When you are calling finish(), the activity will remove from memory, so you will not get the previous changes.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks @Durga M ! That was exactly, what I was looking. And thank you for the resource!

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.