有没有办法检测Android片段中的userInterations?

时间:2016-11-28 10:37:11

标签: android android-fragments user-interaction

任何人都可以帮助我摆脱这种情况。

我已经为Android Activity实施了OnUserInteraction()方法,它对我来说很好。

但我也想要Fragments。我如何才能致电OnUserInteraction(),或者是否有其他方法可以userInteraction识别UI

3 个答案:

答案 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
    }
});