使用接口从另一个片段启动片段

时间:2019-06-17 20:10:19

标签: java android android-fragments

在我的原始线程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();

}

0 个答案:

没有答案