Android 使用接口NullPointerException从MainActivity调用片段的方法

Android 使用接口NullPointerException从MainActivity调用片段的方法,android,android-fragments,interface,nullpointerexception,android-fragmentactivity,Android,Android Fragments,Interface,Nullpointerexception,Android Fragmentactivity,我正在尝试执行这些步骤(如下所示)在我的活动中调用片段方法,而不使用任何片段id和标记。但是我得到了NullpointerException。这对我来说是非常重要的工作。。。这些步骤是否正确从活动中调用片段方法如果是,我做得对吗???如果否,有没有更好的方法从我的活动中调用片段方法??下面给出了我的主要活动和框架。。。请帮忙,谢谢 _我正在尝试做的步骤 1步骤)首先创建一个接口 您的片段必须实现这个接口 public MyFragment extends Fragment implements

我正在尝试执行这些步骤(如下所示)在我的活动中调用片段方法,而不使用任何片段id和标记。但是我得到了NullpointerException。这对我来说是非常重要的工作。。。这些步骤是否正确从活动中调用片段方法如果是,我做得对吗???如果否,有没有更好的方法从我的活动中调用片段方法??下面给出了我的主要活动和框架。。。请帮忙,谢谢

_我正在尝试做的步骤

1步骤)首先创建一个接口

您的片段必须实现这个接口

public MyFragment extends Fragment implements MyInterface
第2步)在活动中,定义MyInterface类型的字段:

3)创建片段并添加片段时:

最后,当出现需要调用Fragment方法的情况时,只需调用:

   listener.myAction() ; // this will call the implementation in your   MyFragment class
MainActivity.java

ClaimFragment.java

我的日志


你的代码真是一团糟,我看到两个接口,你应该只有一个。但是您只使用“hell”接口,但是“hell”字段在哪里定义?你把片段引用存储在哪里?我想,把我试图实现的代码放在哪里,以便让别人容易理解,如果你愿意,我可以把我所有的代码放在哪里?什么是
claimFragment
MainActivity
中?它不知从何处出现(正如
viewPager
)。片段引用??虽然声明了
claimFragment
,但在哪里分配了引用?我希望看到类似于
ClaimFragment-ClaimFragment=**something(ClaimFragment.newInstance(),newclaimfragment())等。*
。你的代码真是一团糟,我看到两个接口,你应该只有一个。但是你只使用“地狱”接口,但是“地狱”字段定义在哪里?你在哪里存储片段引用?我想,把我试图实现的代码放在那里,以便让其他人容易理解,如果你想的话,我可以把我所有的代码放在哪里?是什么
claimFragment
MainActivity
中?它不知从何处出现(就像
viewPager
一样)。片段引用??它在哪里声明了
claimFragment
,在哪里分配了引用?我希望看到类似
claimFragment-claimFragment=**某物(claimFragment.newInstance(),新的ClaimFragment()等。**
 private MyInterface listener ;

 public void setListener(MyInterface listener) {
   this.listener = listener ;
}
setListener(myFragment);
   listener.myAction() ; // this will call the implementation in your   MyFragment class
public class MainActivity extends AppCompatActivity
    implements  NavigationView.OnNavigationItemSelectedListener{ 

 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
private hell listener;
   ClaimFragment claimFragment;
    setListener(claimFragment);
     viewPager = (ViewPager) findViewById(R.id.viewpager);
    setupViewPager(viewPager);

   Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {
            listener.willwork();
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) { }

        @Override
        public void onPageScrollStateChanged(int arg0) { }
    });
}
       tabLayout.setupWithViewPager(viewPager);

  //THIS IS MY INTERFACE IN MAINACTIVITY

public interface hell {
    void willwork();
}

public void setListener(hell listener) {
   this.listener = listener ;
}
public class ClaimFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener , MainActivity.hell {

    @Override
    public void willwork() {
        Toast.makeText(getContext(), "this is ClaimFrag", Toast.LENGTH_SHORT).show();
    }

}
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime: FATAL EXCEPTION: main
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime: Process: earn.free.,        PID: 20843
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:        java.lang.NullPointerException: Attempt to invoke interface method 'void                earn.free.cashback.snapcash.MainActivity$hell.willwork()' on a null object reference
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at   earn.free.cashback.snapcash.MainActivity$2.onPageSelected(MainActivity.java:152)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at       android.support.v4.view.ViewPager.dispatchOnPageSelected(ViewPager.java:1856)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at   android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:625)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at      android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:609)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at    android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:570)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at  android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:551)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at    android.support.design.widget.TabLayout$ViewPagerOnTabSelectedListener.onTabSele cted(TabLayout.java:2008)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at  android.support.design.widget.TabLayout.selectTab(TabLayout.java:1025)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at android.support.design.widget.TabLayout.selectTab(TabLayout.java:995)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at  android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1272)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at android.support.design.widget.TabLayout$TabView.performClick(TabLayout.java:1377 )
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at   android.view.View$PerformClick.run(View.java:19866)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at        android.os.Handler.handleCallback(Handler.java:739)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at    android.os.Handler.dispatchMessage(Handler.java:95)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at    android.app.ActivityThread.main(ActivityThread.java:5254)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at  java.lang.reflect.Method.invoke(Native Method)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at  java.lang.reflect.Method.invoke(Method.java:372)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
04-06 18:31:23.104 20843-20843/? E/AndroidRuntime:     at  com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
04-06 18:31:23.105 747-1255/? W/ActivityManager:   Force finishing  activity 1 earn.free.cashback.snapcash/.MainActivity