如何调用片段的方法,从一个活动,让空

问题描述:

嗨即时通讯有打电话给我的方法签到这是我fragment3问题。我试图从一个活动中调用它。这是我的代码在我的活动试图调用它。在这一行上,我得到一个空指针fragmentTransaction.add(R.id.loginfragment,fragment);我知道我没有给你很多关于我的代码的其他信息,但是如果你需要其他任何信息,请告诉我。我正在使用这些进口来释放我的课程和片段,所以很好。任何建议都会很棒!提前致谢。如何调用片段的方法,从一个活动,让空

import android.support.v4.app.Fragment; 

import android.support.v4.app.FragmentManager; 

import android.support.v4.app.FragmentTransaction; 

      Fragment3 fragment = (Fragment3) getSupportFragmentManager().findFragmentById(R.id.loginfragment); 
      FragmentManager fm = getSupportFragmentManager(); 
      FragmentTransaction fragmentTransaction = fm.beginTransaction(); 
      getSupportFragmentManager().executePendingTransactions(); 
      fragmentTransaction.add(R.id.loginfragment, fragment); 
      fragmentTransaction.addToBackStack(null); 
      fragmentTransaction.commit(); 

      fragment.signIn(); 

你可以使用像EventBus这样的库来链接代码。

定义一个实现事件ü要执行如类:LogOutEvent.java

public static class LogOutEvent { /* Additional fields if needed */ } 

U可以使用像后注销事件从Activity.java以下命令

EventBus.getDefault().post(new LogOutEvent()); 

片段首先需要注册事件总线

@Override 
public void onStart() { 
    super.onStart(); 
    EventBus.getDefault().register(this); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    EventBus.getDefault().unregister(this); 
} 

,然后在片段您可以订阅这样的活动

@Subscribe(threadMode = ThreadMode.MAIN) 
public void onMessageEvent(LogOutEvent event) {/* Do operation here */}; 

更新: 从acitviy做这样的事情。

ExampleFragment片段=(ExampleFragment)getFragmentManager()findFragmentById(R.id.example_fragment)。 fragment。();

+0

感谢您的建议,但我希望的方式来解决我有什么了。 –

+0

在最后看到更新 – Vicky

+0

试过了,没有运气。同样的错误。 java.lang.NullPointerException:尝试在空对象引用上调用虚方法'void com.BarTabs.fragment.Fragment3.signIn()' –

,因为我已经没有什么片段正在运行当前我会作出这样的Fragment3不是目前运行的假设想法。

第一件事findFragmentById(R.id.container)将获取片段容器标识并获取当前运行在片段容器中的片段。

要添加的片段,并执行签到功能试试下面这段代码。

Fragment3 fragment = new Fragment3(); getSupportFragmentManager().beginTransaction.replace(R.id.container,fragment).commit(); fragment.signIn(); 这里确保id是fragment_container ID而不是片段ID