android – onClick在转换后不起作用

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

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

这是我的片段代码

  1. @Override
  2. public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
  3. View rootView = inflater.inflate(R.layout.fragment_main,container,false);
  4. ViewGroup sceneRoot = (ViewGroup)rootView.findViewById(R.id.relative);
  5.  
  6. final Transition transition = new ChangeBounds();
  7. transition.setDuration(3000);
  8.  
  9. final Scene scene1 = Scene.getSceneForLayout(sceneRoot,R.layout.scene1,getActivity());
  10. final Scene scene2 = Scene.getSceneForLayout(sceneRoot,R.layout.scene2,getActivity());
  11.  
  12. ImageView image = (ImageView)rootView.findViewById(R.id.image);
  13. image.setOnClickListener(new View.OnClickListener() {
  14. @Override
  15. public void onClick(View v) {
  16. if (!testBoo){
  17. TransitionManager.go(scene2,transition);
  18. testBoo = true;
  19. } else {
  20. testBoo = false;
  21. TransitionManager.go(scene1,transition);
  22. }
  23.  
  24. }
  25. });
  26. return rootView;
  27. }

片段xml:

  1. <RelativeLayout
  2. android:id="@+id/relative"
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:paddingLeft="@dimen/activity_horizontal_margin"
  8. android:paddingRight="@dimen/activity_horizontal_margin"
  9. android:paddingTop="@dimen/activity_vertical_margin"
  10. android:paddingBottom="@dimen/activity_vertical_margin"
  11. tools:showIn="@layout/activity_main"
  12. tools:context=".MainActivityFragment">
  13.  
  14. <include
  15. layout="@layout/scene1"
  16. />
  17.  
  18. </RelativeLayout>

scene1 xml:

  1. <RelativeLayout
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent"
  4. android:layout_margin="16dp"
  5. xmlns:android="http://schemas.android.com/apk/res/android">
  6.  
  7. <TextView
  8. android:id="@+id/text"
  9. android:text="Hello World!"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:textSize="30sp"
  13. android:layout_alignParentTop="true"
  14. android:layout_toRightOf="@id/image"
  15. android:layout_margin="5dp"
  16. />
  17. <ImageView
  18. android:id="@+id/image"
  19. android:layout_width="wrap_content"
  20. android:layout_height="wrap_content"
  21. android:src="@mipmap/ic_launcher"
  22. android:layout_alignParentTop="true"
  23. />
  24.  
  25. </RelativeLayout>

scene2 xml:

  1. <RelativeLayout
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent"
  4. android:layout_margin="16dp"
  5. xmlns:android="http://schemas.android.com/apk/res/android">
  6.  
  7. <TextView
  8. android:id="@+id/text"
  9. android:text="Hello World!"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:textSize="30sp"
  13. android:layout_alignParentBottom="true"
  14. android:layout_toStartOf="@id/image"
  15. />
  16. <ImageView
  17. android:id="@+id/image"
  18. android:layout_width="wrap_content"
  19. android:layout_height="wrap_content"
  20. android:src="@mipmap/ic_launcher"
  21. android:layout_alignParentBottom="true"
  22. android:layout_alignParentRight="true"
  23.  
  24. />
  25.  
  26. </RelativeLayout>

你知道我哪里错了吗?

解决方法

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

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

  1. private void setListeners() {
  2. findViewById(R.id.thirdText).setOnClickListener(new View.OnClickListener() {
  3. @RequiresApi(api = Build.VERSION_CODES.KITKAT)
  4. @Override
  5. public void onClick(final View v) {
  6. final Scene scene3 = Scene.getSceneForLayout((ViewGroup) findViewById(R.id.mainlayout),R.layout.scene_3,MainActivity.this);
  7. Transition mFadeTransition = new ChangeBounds();
  8. TransitionManager.go(scene3,mFadeTransition);
  9. setListeners();
  10. }
  11. });
  12.  
  13. findViewById(R.id.firsttext).setOnClickListener(new View.OnClickListener() {
  14. @RequiresApi(api = Build.VERSION_CODES.KITKAT)
  15. @Override
  16. public void onClick(final View v) {
  17. final Scene scene1 = Scene.getSceneForLayout((ViewGroup) findViewById(R.id.mainlayout),R.layout.activity_main,MainActivity.this);
  18. Transition mFadeTransition = new ChangeBounds();
  19. TransitionManager.go(scene1,mFadeTransition);
  20. setListeners();
  21. }
  22. });
  23.  
  24. findViewById(R.id.secondText).setOnClickListener(new View.OnClickListener() {
  25. @RequiresApi(api = Build.VERSION_CODES.KITKAT)
  26. @Override
  27. public void onClick(final View v) {
  28. final Scene scene2 = Scene.getSceneForLayout((ViewGroup) findViewById(R.id.mainlayout),R.layout.scene_2,MainActivity.this);
  29. Transition mFadeTransition = new ChangeBounds();
  30. TransitionManager.go(scene2,mFadeTransition);
  31. setListeners();
  32. }
  33. });
  34. }

猜你在找的Android相关文章