android – onClick在转换后不起作用

前端之家收集整理的这篇文章主要介绍了android – onClick在转换后不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试学习简单的TransitionManager工作,但我有点卡住……

我的目标是通过图像点击在两个场景之间进行切换.但在第一次图像点击和第一次场景变换后,我无法捕捉图像点击…

这是我的片段代码

@Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main,container,false);
        ViewGroup sceneRoot = (ViewGroup)rootView.findViewById(R.id.relative);

        final Transition transition = new ChangeBounds();
        transition.setDuration(3000);

        final Scene scene1 = Scene.getSceneForLayout(sceneRoot,R.layout.scene1,getActivity());
        final Scene scene2 = Scene.getSceneForLayout(sceneRoot,R.layout.scene2,getActivity());

        ImageView image = (ImageView)rootView.findViewById(R.id.image);
        image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!testBoo){
                    TransitionManager.go(scene2,transition);
                    testBoo = true;
                } else {
                    testBoo = false;
                    TransitionManager.go(scene1,transition);
                }

            }
        });
        return rootView;
    }

片段xml:

<RelativeLayout
    android:id="@+id/relative"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:showIn="@layout/activity_main"
    tools:context=".MainActivityFragment">

    <include
        layout="@layout/scene1"
        />

</RelativeLayout>

scene1 xml:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="16dp"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <TextView
        android:id="@+id/text"
        android:text="Hello World!"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@id/image"
        android:layout_margin="5dp"
        />
    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"
        android:layout_alignParentTop="true"
        />

</RelativeLayout>

scene2 xml:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="16dp"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <TextView
        android:id="@+id/text"
        android:text="Hello World!"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:layout_alignParentBottom="true"
        android:layout_toStartOf="@id/image"
        />
    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"

        />

</RelativeLayout>

你知道我哪里错了吗?

解决方法

您需要再次设置onClickListeners才能使其正常工作.

在onCreateView中,您可以直接调用setListeners方法.

private void setListeners() {
    findViewById(R.id.thirdText).setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.KITKAT)
        @Override
        public void onClick(final View v) {
            final Scene scene3 = Scene.getSceneForLayout((ViewGroup) findViewById(R.id.mainlayout),R.layout.scene_3,MainActivity.this);
            Transition mFadeTransition = new ChangeBounds();
            TransitionManager.go(scene3,mFadeTransition);
            setListeners();
        }
    });

    findViewById(R.id.firsttext).setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.KITKAT)
        @Override
        public void onClick(final View v) {
            final Scene scene1 = Scene.getSceneForLayout((ViewGroup) findViewById(R.id.mainlayout),R.layout.activity_main,MainActivity.this);
            Transition mFadeTransition = new ChangeBounds();
            TransitionManager.go(scene1,mFadeTransition);
            setListeners();
        }
    });

    findViewById(R.id.secondText).setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.KITKAT)
        @Override
        public void onClick(final View v) {
            final Scene scene2 = Scene.getSceneForLayout((ViewGroup) findViewById(R.id.mainlayout),R.layout.scene_2,MainActivity.this);
            Transition mFadeTransition = new ChangeBounds();
            TransitionManager.go(scene2,mFadeTransition);
            setListeners();
        }
    });
}

猜你在找的Android相关文章