我可以在静态片段中包含一个带有OnClickListener的按钮吗?

时间:2017-06-30 03:15:21

标签: java android android-fragments button

我在我的应用中使用了ViewPager活动,并且在模板活动中它包含一个静态片段。在提供的模板中,ViewPager中有3个页面,每个页面显示此单个静态片段。我希望在这个片段中有一个按钮,但似乎在静态类中添加带有OnClickListener的按钮时,事情变得奇怪了。除非有另一个问题。这是我的片段代码:

public static class LinearFragment extends Fragment {

        RecyclerView recyclerView;
        public ArrayList<AndroidVersion> data;
        public DataAdapter adapter;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
            View rootView = inflater.inflate(R.layout.fragment_linear, container, false);

            Button button = (Button) getActivity().findViewById(R.id.view_pager_button);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent mainActivityIntent = MainActivity.newIntent(getActivity().getApplicationContext());
                    startActivity(mainActivityIntent);
                }
            });

            recyclerView = (RecyclerView) rootView.findViewById(R.id.card_recyler_view_pager);
            recyclerView.setHasFixedSize(true);
            RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
            recyclerView.setLayoutManager(layoutManager);
            loadJSON();

            return rootView;
        }

        private void loadJSON() {
            Retrofit retrofit = MainActivity.getRestAdapter();
            RequestInterface request = retrofit.create(RequestInterface.class);
            Call<JSONResponse> call = request.getJSON();
            call.enqueue(new Callback<JSONResponse>() {
                @Override
                public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) {
                    JSONResponse jsonResponse = response.body();
                    data = new ArrayList<>(Arrays.asList(jsonResponse.getAndroid()));
                    adapter = new DataAdapter(data);
                    recyclerView.setAdapter(adapter);
                    Log.d("TAG","Adapter should have gotten set", new Exception());
                }

                @Override
                public void onFailure(Call<JSONResponse> call, Throwable t) {
                    Log.d("Error", t.getMessage());
                }
            });
        }

    }

尝试单击按钮时出现运行时错误:java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference。这是因为班级是静态的吗?

由于

0 个答案:

没有答案