【问题标题】:How to call button or cast onItemClickListener in a different fragment?如何在不同的片段中调用按钮或投射 onItemClickListener?
【发布时间】:2020-05-20 17:01:53
【问题描述】:

我已经搜索了几天,但无济于事。我有以下问题:我有一个 MainActivity,它与这个问题几乎无关。在这个主要活动中,我有一个片段。这个片段包含一个视图页面,其元素也是一个片段。现在,我在 viewpager 片段布局中声明了一个按钮,我想在“父”片段中调用它。有什么想法???

现在,继续我已经尝试过的内容。我尝试直接调用,然后尝试在任一片段中声明 OnClickListener,并且还尝试使用 callbaciks。然而,这些解决方案都没有奏效......

我有很多对你没用的代码,所以我只强调重要的部分

父片段(ScheduleFragment)

button_cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                builder.setTitle("Are you Sure?")
                        .setMessage("There's no coming back!")
                        .setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {

                            }
                        })
                        .setPositiveButton("yes", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                deleteThis(viewPager2.getCurrentItem());
                                SharedPreferences preferences = getActivity().getSharedPreferences("Settings", Context.MODE_PRIVATE);
                                SharedPreferences.Editor sEditor = preferences.edit();
                                Integer position = preferences.getInt("Number of Days", 3) + 1;
                                sEditor.putInt("Number of Days", position);
                                sEditor.apply();
                            }
                        });
                builder.show();
            }
        });

我的孩子片段(ViewPager_ScheduleObject

@Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        Bundle args = getArguments();
        ((TextView) view.findViewById(R.id.textview_viewpager_schedule))
                .setText("Day " + args.getInt(ARG_OBJECT));

        ViewPager2_Schedule_Adapter viewPager2_schedule_adapter= new ViewPager2_Schedule_Adapter(this);
        SharedPreferences sharedPreferences = getActivity().getSharedPreferences("Settings", Context.MODE_PRIVATE);

        Button button_cancel = view.findViewById(R.id.button_cancel_day);
        button_cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });

如果您需要更多代码,请务必告诉我!任何帮助表示赞赏!

【问题讨论】:

    标签: android android-studio android-layout android-fragments


    【解决方案1】:

    使用界面,做这样的事情

       public interface OurClient {
                public void myButton(View view);
    
       }
    

    然后在你的主类中实现接口

    【讨论】:

    • 对于任何回到这篇文章寻求帮助的人,不要忘记将片段附加到另一个片段中(在我的例子中是 onCreateView)!这样做:@Override public void onAttachFragment(@NonNull Fragment childFragment) { super.onAttachFragment(childFragment); if (childFragment instanceof ViewPager_Schedule_Object) { ViewPager_Schedule_Object headersFragment = (ViewPager_Schedule_Object) childFragment; headersFragment.setOnItemClickListener(this); } }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多