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

纵然是瞬间 提交于 2019-11-30 02:53:16

问题


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.


回答1:


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.



来源:https://stackoverflow.com/questions/13372326/how-to-get-getintent-to-return-null-after-activity-called-with-an-intent-set

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!