返回时如何在活动上运行函数?
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