在我的原始线程Launching fragment from fragment results in defualt screen shown中,我确定需要实现一个接口来启动第二个片段。
很简单,我在活动中实现了接口,并在片段中对其进行了定义。但是,当我运行界面的方法来启动新片段时,它会给我一个
java.lang.NullPointerException:
Attempt to invoke interface method 'void
rangers.socman.BattleRhythmFrag$doubleFrag.fragOut()' on a null object
reference at rangers.socman.BattleRhythmFrag.onClick(BattleRhythmFrag.java:151)
更新:修复了与界面相关的代码,并修复了我的问题Using an interface to communicate from fragment to activity
通过建议,这个人说我必须通过“ this”,以便片段知道接口应该与活动进行通信是有意义的。我在Internet上到处都看到了,找不到通过接口启动片段的人。它总是将数据传递/检索到片段。有什么想法吗?
片段定义接口
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.newBattle:
{
// public doubleFrag testFrag
testFrag.fragOut();
}
case R.id.editBattle:
{
}
case R.id.deleteBattle:
{
}
break;
default:
{
}
}
}
public interface doubleFrag {
void fragOut();
}
实现接口的活动
@Override
public void fragOut() {
NewBattleFrag test = new NewBattleFrag();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.home_content,test).addToBackStack(null).commit();
}