【发布时间】:2018-06-02 17:16:32
【问题描述】:
我有 3 个完全一样的片段,每个片段中只有一个字符串变量的区别,即使它们具有相同的布局文件和相同的 onCreateView 方法,我创建了一个包含所有公共方法的超类,但仍然没有子类变量传递给它的超类。它给出了空对象引用错误。
public class QuizFragment extends Fragment {
private String posType = "xyz";
@Nullable
@Override
public View onCreateView( @NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState ) {
View view = inflater.inflate(R.layout.fragment_adapter, container, false);
initContentView("createdDate");
postCounterWatcher = new PostManager.PostCounterWatcher() {
@Override
public void onPostCounterChanged( int newValue ) {
updateNewPostCounter();
}
};
return view;
}
private void initContentView( String sortBy ) {
newPostsCounterTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick( View v ) {
refreshPostList(posType);
}
});
postsAdapter = new PostsAdapter((MainActivity) getActivity(), swipeContainer, posType, sortBy);
postsAdapter.setCallback(new PostsAdapter.Callback() {
@Override
public void onItemClick( final Post post, final View view ) {
PostManager.getInstance(getActivity()).isPostExistSingleValue(post.getId(), new OnObjectExistListener<Post>() {
@Override
public void onDataChanged( boolean exist ) {
if (exist) {
openPostDetailsActivity(post, view);
} else {
showFloatButtonRelatedSnackBar(R.string.error_post_was_removed);
}
}
}, posType);
}
@Override
public void onListLoadingFinished() {
progressBar.setVisibility(View.GONE);
}
@Override
public void onAuthorClick( String authorId, View view ) {
openProfileActivity(authorId, view);
}
@Override
public void onCanceled( String message ) {
progressBar.setVisibility(View.GONE);
Toast.makeText(getActivity(), message, Toast.LENGTH_LONG).show();
}
});
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
((SimpleItemAnimator) recyclerView.getItemAnimator()).setSupportsChangeAnimations(false);
recyclerView.setAdapter(postsAdapter);
postsAdapter.loadFirstPage(posType);
updateNewPostCounter();
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled( RecyclerView recyclerView, int dx, int dy ) {
hideCounterView();
super.onScrolled(recyclerView, dx, dy);
}
});
}
}
这里只是 posType 是可变的,在其他片段中会有所不同。
【问题讨论】:
-
你能把这些片段的代码贴出来看看有什么问题
-
我已添加代码,请查看帖子。
标签: android android-fragments inheritance fragment