我正在尝试在片段和活动之间设置接口,但是,我一直收到此错误。
java.lang.NullPointerException: Attempt to invoke interface method 'void rangers.socman.FragmentChanger.doubleFrag()' on a null object reference
at rangers.socman.BattleRhythmFrag.onClick(BattleRhythmFrag.java:144)
Idk为什么要这样做I:
1. Created an interface and made a method to use.
2. Implemented the interface in my main activity.
3. Used it in my fragment
我正在遵循我为应用程序开发课程编写的一些代码,但是它不起作用。奋斗了几天,只是为了在片段中找到一个按钮来启动另一个片段。我很沮丧。
接口代码
package rangers.socman;
public interface FragmentChanger {
void doubleFrag();
}
活动代码
@Override
public void doubleFrag() {
}
片段代码
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.newBattle:
{
//prvate FragmentChanger fragChange
fragChange.doubleFrag();
}
case R.id.editBattle:
{
}
case R.id.deleteBattle:
{
}
break;
default:
{
}
}
答案 0 :(得分:1)
您应该在片段中使用onAttach中的上下文。该上下文是一个活动实例,您应使用以下命令进行检查:
private FragmentChanger fragmentChanger;
public void onAttach(@NonNull Context context) {
super.onAttach(context);
if (context instanceof FragmentChanger) {
fragmentChanger = (FragmentChanger) context;
}
}
...
void onClick {
fragmentChanger.doubleFrag();
}