【问题标题】:Returning to activity after onActivityResult?onActivityResult 后返回活动?
【发布时间】:2015-03-06 14:53:55
【问题描述】:

所以,这就是场景。 有一个 EditText 有自己的 TextWatcher 集,用于设置字数。

我还有一个导航抽屉,滑动,其中有一个选项可以为结果启动一个新的活动。

我想要的结果是用户想要达到的目标字数,然后从用户输入中得到结果并计算目标接收的百分比并将其设置为Main Activity中TextView的文本。

现在,问题是:

Navigation Drawer 有自己的ItemClickListener,它作为一个独立的View存在于Activity中。 (大部分是隐藏的。)

而主要活动是不同的视图。

如何实现正确的 OnActivityResultMethod 以便我可以返回到 Activity 的 oncreate 方法,从技术上讲,返回到 TextWatcher 以便可以进行计算并设置百分比。

因为 OnActivityResult 是自动调用的,所以我无法覆盖它。

它有应用程序需要的数据,但它不是以编程方式调用的,所以它不能返回值。

【问题讨论】:

    标签: android textview navigation-drawer textwatcher


    【解决方案1】:

    你可以试试这个:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)        
        Intent i = getIntent();
        i.putExtras(data.getExtras()); // pass result data to onCreate()
        startActivity(i);
        finish();
    }
    

    重新启动Activity 是返回onCreate() 的唯一方法。

    编辑:

    现在,在您的onCreate() 中进行检查:

    Intent i = getIntent();
    Bundle args = i.getExtras();
    if(args != null){
    
        ....
    
    }
    

    并在此处处理EditText 中的数据。

    【讨论】:

    • 如何获取通过 OnActivityResult 传递给 MainActivity 的数据,这里再次使用 getIntent() 参数调用。
    • finish() 之后的代码在同一个activity上执行是不是有缺陷?
    • 我明白你想要做什么,我也在尝试。我的问题是,finish(); 时不应该破坏活动吗?被调用了,如果是这样,代码执行后是怎么写的?
    • finish() 结束Activity的当前实例,它在所有代码执行后调用,而不是之前:)
    • 如果我们不打电话给finish(),当你回去的时候,同样的Activity会在那里......
    【解决方案2】:

    如果您使用 startActivityForResult() 启动 Activity,您可以使用 onActivityResult() 轻松获得结果。

    检查这篇文章中的代码并尝试一下。

    How to manage `startActivityForResult` on Android?

    【讨论】:

    • 这不是问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2017-11-03
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多