任何人都可以帮助我摆脱这种情况。
我已经为Android Activity实施了OnUserInteraction()
方法,它对我来说很好。
但我也想要Fragments
。我如何才能致电OnUserInteraction()
,或者是否有其他方法可以userInteraction
识别UI
。
答案 0 :(得分:1)
@Sunil的答案导致java.lang.StackOverflowError,所以我更正了它。下面的代码运行顺利
在您的应用中创建一个名为UserInterationListener的Java类,并在下面放置代码
public interface UserInteractionListener {
void onUserInteraction();
}
然后在您的活动中为此界面创建一个实例变量,如下所示:
private UserInteractionListener userInteractionListener;
然后在您的活动中为该变量实现一个setter方法。
public void setUserInteractionListener(UserInteractionListener userInteractionListener) {
this.userInteractionListener = userInteractionListener;
}
现在覆盖您活动的onUserInteraction方法,如果listener变量不为null,则调用接口方法。
@Override
public void onUserInteraction() {
super.onUserInteraction();
if (userInteractionListener != null)
userInteractionListener.onUserInteraction();
}
现在,在您的片段类中,如下实现UserInteractionListener
public myFragment extends Fragment implements UserInteractionListener
也重写接口的方法
@Override
public void onUserInteraction(){
//TODO://do your work on user interaction
}
然后在您的片段中调用活动的userinteraction setter方法,如下所示
((YourActivity) getActivity()).setUserInteractionListener(this);
这最后一部分很重要。
答案 1 :(得分:0)
在Activity
,
@Override
public void onUserInteraction() {
super.onUserInteraction();
// Get current fragment
// Redirect to current fragment's one public method
}
答案 2 :(得分:0)
还有另一种方法。
在您的活动中创建一个侦听器,如下所示:
public interface UserInteractionListener {
void onUserInteraction();
}
然后在您的活动中为此界面创建一个实例变量,如下所示
private UserInteractionListener userInteractionListener;
然后在您的活动中实现此变量的setter方法。 (如果要将相同的用户互动传递给多个使用者,甚至可以保留一个eventlistener对象的列表)
public void setUserInteractionListener(UserInteractionListener userInteractionListener) {
this.userInteractionListener = userInteractionListener;
}
现在覆盖您活动的onUserInteraction
方法,如果listener变量不为null,则调用接口方法。
@Override
public void onUserInteraction() {
super.onUserInteraction();
if (userInteractionListener != null)
userInteractionListener.onUserInteraction();
}
现在,在您的片段类中,注册以下事件
((YourActivity) getActivity()).setUserInteractionListener(new YourActivity.UserInteractionListener() {
@Override
public void onUserInteraction() {
// Do whatever you want here, during user interaction
}
});