Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何获取用另一个类扩展的片段视图?_Android_Android Fragments - Fatal编程技术网

Android 如何获取用另一个类扩展的片段视图?

Android 如何获取用另一个类扩展的片段视图?,android,android-fragments,Android,Android Fragments,标题有点混乱,但我不知道该写什么 我正在使用库为我的应用程序()的开始公开一个滑动教程。问题是我需要在带有findViewById的片段中找到一个视图,但是我需要从片段的视图派生这个调用。我应该使用onCreateView方法,但正如我在标题中所说的,我的片段需要从TutorialSupportFragment扩展(尽管有片段),因此如果我重写onCreateView方法,库中的一些组件将无法加载 有没有一种方法可以在不破坏扩展方法的情况下使用此onCreateView public class

标题有点混乱,但我不知道该写什么

我正在使用库为我的应用程序()的开始公开一个滑动教程。问题是我需要在带有findViewById的片段中找到一个视图,但是我需要从片段的视图派生这个调用。我应该使用onCreateView方法,但正如我在标题中所说的,我的片段需要从TutorialSupportFragment扩展(尽管有片段),因此如果我重写onCreateView方法,库中的一些组件将无法加载

有没有一种方法可以在不破坏扩展方法的情况下使用此onCreateView

public class CustomTutorialFragment extends TutorialSupportFragment implements OnTutorialPageChangeListener, CustomTutorialMvpView {

...
我需要运行以下程序:

@Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(getLayoutResId(), container, false);

        btNext = (Button) view.findViewById(R.id.btNext);
        btSkip = (Button) view.findViewById(R.id.btSkip);

        btNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                nextPage();
            }
        });

        btSkip.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                skipTutorial();
            }
        });

        return view;
    }
这就是错误,我认为问题在于我可以重写该方法,而不破坏库创建的前一个方法

FATAL EXCEPTION: main
   Process: com.dummy.carrefour.mvp, PID: 24342
   java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dummy.carrefour.mvp/com.dummy.carrefour.mvp.ui.tutorial.TutorialActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.view.ViewPager.setAdapter(android.support.v4.view.PagerAdapter)' on a null object reference
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2666)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
       at android.app.ActivityThread.-wrap12(ActivityThread.java)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:154)
       at android.app.ActivityThread.main(ActivityThread.java:6121)
       at java.lang.reflect.Method.invoke(Native Method)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.view.ViewPager.setAdapter(android.support.v4.view.PagerAdapter)' on a null object reference
       at com.cleveroad.slidingtutorial.TutorialImpl.onViewCreated(TutorialImpl.java:97)
       at com.cleveroad.slidingtutorial.TutorialSupportFragment.onViewCreated(TutorialSupportFragment.java:146)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1314)
       at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
       at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758)
       at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363)
       at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149)
       at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)
       at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013)
       at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
       at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607)
       at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
       at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1248)
       at android.app.Activity.performStart(Activity.java:6699)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2629)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727) 
       at android.app.ActivityThread.-wrap12(ActivityThread.java) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478) 
       at android.os.Handler.dispatchMessage(Handler.java:102) 
       at android.os.Looper.loop(Looper.java:154) 
       at android.app.ActivityThread.main(ActivityThread.java:6121) 
       at java.lang.reflect.Method.invoke(Native Method) 
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 
 
你有两个选择

第一个是调用
super.onCreateView()
,并使用返回的
视图执行操作:

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = super.onCreateView(inflater, container, savedInstanceState);
    // Perform necessary actions
    Button button = view.findViewById(R.id.button);
    return view;
}
第二个选项是覆盖
onViewCreated()

你有两个选择

第一个是调用
super.onCreateView()
,并使用返回的
视图执行操作:

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = super.onCreateView(inflater, container, savedInstanceState);
    // Perform necessary actions
    Button button = view.findViewById(R.id.button);
    return view;
}
第二个选项是覆盖
onViewCreated()


你能显示代码吗?没有它很难理解。抱歉,发布了。看一看。你能显示代码吗?因为没有它很难理解。发布了,对不起。看一看。