我可以在另一项活动中更新一个活动中的列表视图吗?

时间:2010-10-04 23:07:07

标签: android listview android-activity tabs android-intent

我目前有一个带有2个选项卡的选项卡布局,一个带有列表视图的选项卡和一个带有make字符串选项的选项卡,因此我可以在列表视图中添加它们。两个标签都有自己的活动,因为这使得代码更加结构化,我不必在以后重复我的自我。

让我说在提供我创建字符串的选项卡中,我按下更新列表按钮,如何在没有startActivity()的情况下更新列表视图?如果我使用startActivity(),它会启动List.java,而不是在列表视图选项卡中显示列表,而是全屏显示,这违反了选项卡视图的用途。换句话说,startActivity()从列表的选项卡视图中窃取焦点,并将其全屏发送。

感谢您的时间。

编辑:我想在列表视图选项卡中更新活动,而不启动进入全屏的新活动,并且不更新选项卡中的活动。

2 个答案:

答案 0 :(得分:2)

一种解决方案是将您的数据模型与您的视图(Activity)分开,这通常是一种很好的做法,但在这种情况下,您可以使用两个选项卡与同一模型进行交互。

您可以在Application类中提供对数据模型的访问。然后,当您在列表活动上调用onResume时,您可以根据当前数据更新视图。

编辑:

public class MyApplication extends Application {
   private List<MyObject> myData;

   public List<MyObject> getMyData() {
     return myData; 
   }

   public void setMyData(List<MyObject> mydata) {
     this.myData = myData;
   }
}

在清单中,您需要添加应用程序标记以指定它应该使用MyApplication作为应用程序类。

然后,在您的活动中:

   public void onResume() {
      MyApplication app = (MyApplication) getApplication();
      List<MyData> data = app.getMyData();
      // update  my view with the data
   }

答案 1 :(得分:0)

当我制作我的应用程序时,我遇到了同样的问题,我找到的唯一解决方案就是将此标志添加到我的意图中,所以每次我去选项卡都会刷新它自己

.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)

我希望它有所帮助。