【问题标题】: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) 使用接口监听器

标签: android listview android-asynctask


【解决方案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() 方法引用您的适配器。

【讨论】:

    猜你喜欢
    • 2019-08-30
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    相关资源
    最近更新 更多