提问人:Berna 提问时间:8/18/2021 最后编辑:ZainBerna 更新时间:8/18/2021 访问量:374
如何在 Activity 中将 ClickListener 设置为属于 Fragment 的 Button?(Android Studio Java)
How do I set a ClickListener in a Activity to a Button that belongs to a Fragment? (Android studio Java)
问:
我需要一些帮助。我正在 android studio 上制作一个应用程序,并且在 Fragment 中初始化了一个 Button。我需要在另一个 Activity 中调用此按钮并在其上设置单击侦听器。
问题是,当我这样做时,我得到.NullPointerExceptionError,它说对象的值为 null。
现在我尝试在我的片段和活动中初始化按钮,但我不断收到该错误并且应用程序崩溃。
我需要一些帮助才能从 Fragment 调用此按钮。也许我的问题与其他问题相似,但是我花了几个小时才寻找这个问题的解决方案,却一无所获。
提前感谢您的所有帮助
答:
1赞
Nikhil Bansal
8/18/2021
#1
由于按钮是 Fragment 的一部分,因此它只适合在 Fragment 的作用域本身中定义对按钮的任何交互/修改。
有两种方法可以解决:
在 Fragment 本身中创建单击侦听器,然后从那里导航到另一个 Activity。
创建一个 Activity 实现的接口,并且 Fragment 具有该接口的实例。单击按钮时,调用接口的方法。这样一来,您就可以控制托管片段的活动。
MyActivity extends AppCompatActivity implements MyClickListener { void onMyButtonClick() { // Navigate to another activity here } } MainFragment extends Fragment { private MyClickListener listener; void onAttach(Context context) { listener = (MyClickListener) context; // Now call listener.onMyButtonClick() from button's on click listener. } } interface MyClickListener { void onMyButtonClick(); }
评论
0赞
Berna
8/18/2021
很抱歉提出问题,但什么是 MyClickListener?因为如果我写它,它会给我错误。然后 void onAttach 它永远不会被使用。你用 onMyButtonClick 写的第二条评论是 OnClick()?如果你有时间,你可以重新编写该代码,因为我无法按其编写方式获取它。很抱歉给您带来不便,但我对此感到困惑,现在有点绝望。如果你不能重写,那也没关系。无论如何,感谢您的帮助:)
0赞
Nikhil Bansal
8/18/2021
@FrancescoBernardi 这只是您必须定义的一个接口。我已经更新了代码示例。MyClickListener
评论