在Android中,我应该在fragment或activity中接收fragment点击事件吗?

Mar*_*tin 4 android android-fragments android-activity

例如,我对接收片段中的点击事件感到困惑,我应该将此点击事件传递到我的活动中还是在片段本身中处理此事件?

我还试图解决当我在活动中提供超过 1 个片段时的情况,例如活动的平板电脑版本。

这也提出了我的另一个问题,我在我的活动中以及我的片段中创建了一个菜单,我应该在哪里检查

 onOptionsItemSelected
Run Code Online (Sandbox Code Playgroud)

在活动或片段内部?

我对应该在哪里处理点击事件和菜单感到非常困惑。

Fin*_*ith 5

您可以在片段内部或活动本身处理单击事件,这取决于您想要实现的目标。就像假设如果 onClick 事件执行一些由片段本地处理的工作,那么您应该在片段本身中处理它,但是如果 onClick 事件执行一些与其他片段相关的工作(即同一活动中包含的其他片段),那么您可能应该使用回调方法(侦听器)来让活动处理单击事件。

例如。假设您有两个片段,即 LogInFragment 和 LogOutFragment,并且您在活动中一次仅显示一个片段。然后,假设当活动启动时,您将显示 LogInFragment,其中有一个名为“登录”的按钮。当您单击按钮时,您可以在活动中处理 onClick 事件,以便它可以用 LogOutFragment 替换该片段。

考虑另一种情况,假设当在 LogInFragment 内单击“登录”按钮时,您只想将按钮的文本更改为“注销”,那么这可以在片段本身内部处理,所以总的来说,只需考虑一下您想要实现和处理的目标相应的事件。

第二部分:onOptionsItemSelected() 方法放置在活动类中,它处理菜单项的单击。现在,如果您在片段中使用另一个菜单,那么这个特定的菜单项单击/选定事件应该在片段的类中处理,相当简单。