2015-10-16 15 views
6

Tôi đang cố gắng tìm hiểu công việc TransitionManager đơn giản, nhưng tôi bị kẹt một chút ...onClick không hoạt động sau khi chuyển đổi

Mục tiêu của tôi là thay đổi giữa hai cảnh bằng cách nhấp vào hình ảnh. Nhưng sau khi nhấp chuột hình ảnh đầu tiên và thay đổi cảnh đầu tiên, tôi không thể bắt hình ảnh nhấp chuột ...

đây là đoạn mã của tôi:

@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; 
    } 

đoạn 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> 

Scene 1 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> 

cảnh2 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> 

Bạn có biết mình đang đi sai ở đâu không?

+0

tìm thấy câu trả lời nào chưa? –

Trả lời

-1

Điều thú vị đủ (mặc dù nó giống nhau cho hầu hết tất cả các hướng dẫn), khi tôi thay đổi ID vùng chứa, nó bắt đầu hoạt động. Bạn có thể thử phương pháp tương tự để xem nó có hoạt động không.

+0

Thùng chứa nào (hộp đựng đồ gì)? –

1

Bạn cần đặt lại onClickListeners để hoạt động trở lại.

Trong chế độ onCreateView, bạn có thể gọi trực tiếp phương thức 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(); 
     } 
    }); 
} 
Các vấn đề liên quan