Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get getIntent() to return null after Activity called with an Intent set

This question was similar to my original question, but I think there is a better way to approach a solution.

getIntent returns wrong intent when setIntent is followed by a rotation

Basically, in my main Activity, which extends FragmentActivity, there are two instances where in a Fragment I pass an Intent to this Activity.

This is the code that is having the problem:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(...);

    if (getIntent() != null && getIntent().getData() != null) {
        String data = getIntent().getDataString();
        //setIntent(null);

The setIntent was an attempt to solve my problem but it failed to work.

What happens is when I click on a link that goes back to my Activity as an Intent, then I go to the next Fragment, then I rotate the phone, the Intent that was passed two Fragments ago shows up again when I call getIntent.

So, when I get the data out of the Intent, how can I set it so the next call to getIntent will return null? Or, would it make sense to just have the data in the Intent be null instead?

I am trying to avoid updating information in the SharedPreferences to handle this.

like image 803
James Black Avatar asked Nov 14 '12 02:11

James Black


People also ask

Can getIntent return null?

It can return null, but only if you set it to null in the Activity .

How do I get intent extras in fragment?

in the fragment , you just need call getActivity() first: String Item = getActivity(). getIntent(). getExtras().

Which method of the Intent class allows you to pass information to the target?

putExtra method is used.


1 Answers

I found a solution that appears to work, but I expect there is a better way to do it.

    if (getIntent() != null && getIntent().getData() != null) {
        String data = getIntent().getDataString();
        getIntent().setData(null);
        setIntent(null);

I think the setIntent isn't of any use, but the setData(null) seems to do the trick.

like image 171
James Black Avatar answered Oct 17 '22 16:10

James Black