返回时如何在活动上运行函数?

Posted

技术标签:

【中文标题】返回时如何在活动上运行函数?【英文标题】:How do I run a function on an activity when going back to it? 【发布时间】:2017-10-20 23:28:35 【问题描述】:

我有一个执行 AsyncTask onCreate() 的应用程序。

AsyncTask 从 API 获取电影详细信息,并将标题、海报和概述添加到列表视图。 onPostExecute 列表视图添加了一个适配器。

listView.setAdaptor(adaptorxx);

在 AsyncTask 完成并将适配器添加到 listView 后,用户可以按下 listView 中的一个项目,然后将额外的一些电影信息放到另一个名为 DetailsActivity 的活动中。此活动显示有关电影的详细信息。此活动的一个功能是将电影添加到“观看列表”

现在:

我怎样才能让当我回到电影列表视图活动时,列表视图会更新为观看的电影列表?

我试着放了

listView.setAdaptor(null);
Adaptor adaptorxx = new Adaptor(xxx, xxxx, xxxx, xxxx);
listView.setAdaptor(adaptorxx);

在创建 onPause 后的 onResume 中,没有用,我也尝试将它添加到 onRestart 但也没有用

【问题讨论】:

StartActivityforResult 是您所需要的。 您可以使用 1) startActivityforResult 或 2) 使用接口监听器 【参考方案1】:

我给你看StartActivityForResult的例子

startActivityForResult() 方法有两种变体。

public void startActivityForResult (Intent intent, int requestCode)  
public void startActivityForResult (Intent intent, int requestCode, Bundle options) 

下面的例子

ActivityOne

像这样传递你的意图

 Intent intent=new Intent(MainActivity.this,SecondActivity.class);  
                startActivityForResult(intent, 2);// Activity is started with requestCode 2  

然后添加 onActivityResult 您从第二个活动中获取数据的位置

// Call Back method  to get the Message from secondActivity  
    @Override  
       protected void onActivityResult(int requestCode, int resultCode, Intent data)  
         
                 super.onActivityResult(requestCode, resultCode, data);  
                  // check if the request code is same as what is passed  here it is 2  
                   if(requestCode==2)  
                           
                            String message=data.getStringExtra("MESSAGE");   
                            textView1.setText(message);  
                           
       

ActivityTwo

像下面这样传递意图,以便您可以在onActivityResult 中获取意图对象并从中获取数据。

  Intent intent=new Intent();  
                    intent.putExtra("MESSAGE",message);  
                    setResult(2,intent);  
                    finish();//finishing activity  

注意:添加该数据后,您必须使用notifyDatasetChanged() 方法引用您的适配器。

【讨论】:

以上是关于返回时如何在活动上运行函数?的主要内容,如果未能解决你的问题,请参考以下文章

Jackson - 如何在运行时找到活动的 JsonView

(导航组件)返回首页fragment时如何在activity上显示返回箭头?

如何使用firebase auth android无法返回android

从片段返回到上一个活动 onclick back button

如何像启动画面一样只运行一次活动

如何检测我的动态壁纸是在预览/“设置壁纸”活动中还是在主屏幕上运行