使用活动中的onMenuItemCLickListener从多个片段调用方法

时间:2015-05-19 22:40:03

标签: android android-fragments menu android-actionbar items

我祝大家一切顺利。

首先,抱歉,如果我误操作,因为我不知道如何写英文,至少是正确的。但是,对于你能给我的所有回复都不是问题,因为我可以很好地阅读英语(是的,我是一个懒散的人,应该去学习它)。

其次,我现在正在学习android,并且已经开发了一个月的应用程序。问题是我的应用程序在Activity上有一个操作栏菜单,其中包含由VIEWPAGER添加的3个片段,因此我无法将它们投射到活动中以运行其方法....这是一个大问题!这些片段中的每一个都有几个EditText,我想要的是使用我的ACTIVITY ACTIONBAR菜单项目点击来存储来自EdtiText的所有数据并将其存储在SQLite数据库中;每个片段一个表。

我已经做了所有事情,我唯一需要知道的是如何在按下项目时调用三个片段中的方法,在我的活动菜单项的onOptionClickListener上。 (最重要的是,这是我的活动的菜单,而不是片段,并且我无法在我的活动中立即显示片段,因为我正在使用viewpager来创建它们。)

再次抱歉我的错误,并且抱歉没有发布我的代码,但是,真的很大,所以不要说清楚我的问题我会混淆任何人,所以你可以帮助我减少需要的更好我真的很大的代码,所以感谢理解和帮助我。

1 个答案:

答案 0 :(得分:1)

有一个课程。 检查Observer类。实际上并不是太复杂。您可以轻松重制此行为。

*只需使用方法

创建一个界面
 public interface MyObserverInterface {
     //the code that will run when a save button is clicked in your menu
     //fragment
     public void starAction();
 }

*让你的片段植入这个界面。

*创建第二个类,您将获得对片段的引用

public class MyObserver {

List<Fragment> listFragments;
//make sure your fragments implement the MyObserverInterface interface
public MyObserver(Fragment fragment1, Fragment fragment2) {
    listFragments = new ArrayList<Fragment>();
    listFragments.add(fragment1);
    listFragments.add(fragment2);
}

public void startActionInAllFragments(){
    for(int n=0;n<listFragments.size();n++){
        listFragments.get(n).starAction();
    }
}
}

现在只需在片段中创建MyObserver类的实例并调用其方法startActionInAllFragments()

让我知道它是否适用于你。