如何在MainActivity中访问片段类的方法?

时间:2014-09-18 08:57:20

标签: android android-fragments android-activity

我有一个片段类,我正在进行Async调用。现在我在Fragment类中创建一个方法,我希望在MainActivity类中调用此方法。 MainActivity类动态加载Fragment类。

代码段是:

public class MainHandlerFragment extends Fragment{

   public boolean getDetails(User user){
      if(user==null)
         return false;
      else 
         return true;
  }
}

MainActivity.java

我正在打电话

 MainHandlerFragment fragment = new MainHandlerFragment(user);
   fragment.getDetails();   // But i am getting NullPointerException.

如何在MainActivity中调用fragment类的方法?

3 个答案:

答案 0 :(得分:2)

以下是一个例子:

public class MyFragment extends Fragment {

    public static final String TAG = “MyFragment.TAG”;

    // Implementation follows.

}

public class MyActivity extends Activity {

    public MyFragment getMyFragment() {
        final FragmentManager manager = getFragmentManager();
        return (MyFragment) manager.findFragmentByTag(MyFragment.TAG);
    }

    public void invokeMethodFromMyFragment() {
        final MyFragment fragment = getMyFragment();
        if (null != fragment) {
            fragment.getDetails();
        }
    }

}

这假定您的MyFragment交易在提交时包含MyFragment.TAG标记。

答案 1 :(得分:0)

FragmentClass fragment = (FragmentClass) getFragmentManager().findFragmentById(
                R.id.ll_fragment1);
        fragment.fragmentMethod();

在您的活动中尝试此操作,您可以从活动中调用片段方法

答案 2 :(得分:0)

尝试拨打

fragment.getDetail(user);

使用事务类的add()或replace()方法完成事务后....还有commit()它。

希望它能奏效。