我在我的应用中使用了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
。这是因为班级是静态的吗?
由于