如何调用片段的方法,从一个活动,让空
嗨即时通讯有打电话给我的方法签到这是我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。();
,因为我已经没有什么片段正在运行当前我会作出这样的Fragment3不是目前运行的假设想法。
第一件事findFragmentById(R.id.container)
将获取片段容器标识并获取当前运行在片段容器中的片段。
要添加的片段,并执行签到功能试试下面这段代码。
Fragment3 fragment = new Fragment3(); getSupportFragmentManager().beginTransaction.replace(R.id.container,fragment).commit(); fragment.signIn();
这里确保id是fragment_container ID而不是片段ID。
感谢您的建议,但我希望的方式来解决我有什么了。 –
在最后看到更新 – Vicky
试过了,没有运气。同样的错误。 java.lang.NullPointerException:尝试在空对象引用上调用虚方法'void com.BarTabs.fragment.Fragment3.signIn()' –