Java 单独片段中的按钮单击侦听器不工作?
我试图在我的片段中添加一个按钮点击器侦听器,但它似乎不起作用 创建我的主片段是为了显示另外两个片段的选项卡。现在,这个选项卡片段在工具栏中有一个按钮来过滤内容。这个过滤器按钮的侦听器和方法在我的另外两个片段中。问题是,当点击按钮时,它什么也不做 选项卡片段:Java 单独片段中的按钮单击侦听器不工作?,java,android,android-studio,android-fragments,Java,Android,Android Studio,Android Fragments,我试图在我的片段中添加一个按钮点击器侦听器,但它似乎不起作用 创建我的主片段是为了显示另外两个片段的选项卡。现在,这个选项卡片段在工具栏中有一个按钮来过滤内容。这个过滤器按钮的侦听器和方法在我的另外两个片段中。问题是,当点击按钮时,它什么也不做 选项卡片段: public class LibraryFragment extends Fragment implements ViewPager.OnPageChangeListener { private View view; priv
public class LibraryFragment extends Fragment implements ViewPager.OnPageChangeListener {
private View view;
private SectionsPagerAdapterLib PageAdapter;
public ViewPager viewPager;
private ImageView filterBtn;
private LibraryFragment.OnItemClickListener mOnItemClickListener;
public interface OnItemClickListener {
void onItemClick(View view);
}
public void setOnItemClickListener(LibraryFragment.OnItemClickListener mItemClickListener) {
this.mOnItemClickListener = mItemClickListener;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
this.view = inflater.inflate(R.layout.fragment_library_tabs, container, false);
TabLayout tabLayout = view.findViewById(R.id.fav_list_tabs);
filterBtn = view.findViewById(R.id.filterBtn);
viewPager = view.findViewById(R.id.fav_list_tabs_container);
filterBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(v);
}
}
});
PageAdapter = new SectionsPagerAdapterLib(getFragmentManager(), getActivity());
viewPager.setAdapter(PageAdapter);
viewPager.setOffscreenPageLimit(2);
viewPager.addOnPageChangeListener(this);
tabLayout.setupWithViewPager(viewPager);
getActivity().getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
getActivity().getWindow().setStatusBarColor(getActivity().getResources().getColor(R.color.mWindowColorHeaders));
return view;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
Fragment fragment = PageAdapter.getFragment(position);
if (fragment != null) {
fragment.onResume();
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
}
单击按钮时应该工作的片段:
public class ContentFragment extends Fragment implements LibraryFragment.OnItemClickListener {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_data, null);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// find my views, etc
}
@Override
public void onItemClick(View view) {
//populate filter list
if (Constants.genreList != null){
list.add(0, "All Filters");
for (int i = 0; i < Constants.list.size(); i++) {
list.add((i + 1), Constants.list.get(i).getName());
}
}
final String[] listArray = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
listArray[i] = list.get(i);
}
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Select Filter");
builder.setItems(genreArray, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// ((TextView) v).setText(genreArray[i]);
selected_list.setText(listArray[i]);
if (i == 0) {
getData(1);
}
dialogInterface.dismiss();
}
});
builder.show();
}
}
公共类ContentFragment扩展片段实现LibraryFragment.OnItemClickListener{
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
返回充气器。充气(R.layout.fragment_数据,空);
}
@凌驾
已创建公用void onview(@NonNull视图,@Nullable Bundle savedInstanceState){
super.onViewCreated(视图,savedInstanceState);
//找到我的观点等
}
@凌驾
public void onItemClick(视图){
//填充筛选器列表
if(Constants.genreList!=null){
添加(0,“所有过滤器”);
对于(int i=0;i
任何帮助都将不胜感激。请在片段中尝试
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{ //change fragment_video to where your button is located//
final View v2 = inflater.inflate(R.layout.fragment_video,container,false);
//start stream Button
Button startButton = (Button)v2.findViewById(R.id.buttonStart);
startButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
//what your button is going to do
}
});
return v2;
}
由于片段是由活动处理的,所以片段仍然彼此不依赖,可以在一个或两个窗格模式下使用。活动应该处理这两个片段的侦听器。演示如何切换/显示
片段
s,特别是当/在您调用setonimclicklesstener
@snachmsm时。这就是问题所在,我不知道在哪里调用我的setonimclicklesstener。我是android开发和在线学习的新手,所以这有点困难。LibraryFragment从具有底部导航的MainActivity类加载。