2015-10-16 31 views
6

Próbuję dowiedzieć się proste prace TransitionManager, ale utknąłem trochę ...onClick nie działa po przejściu

Moim celem jest uczynić zmianę pomiędzy dwiema scenami przez kliknięcie obrazu. Ale po pierwszym zdjęciu kliknięcia i pierwszej zmiany sceny, nie mogę złapać image Kliknij ...

tutaj jest mój kod fragment:

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

fragment 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> 

Masz pojęcie, gdzie idę źle?

+0

znalazłeś jeszcze odpowiedź? –

Odpowiedz

-1

Co ciekawe (chociaż tak samo jest w prawie wszystkich samouczkach), po zmianie identyfikatorów kontenerów zaczęło działać. Możesz wypróbować tę samą metodę, aby sprawdzić, czy działa.

+0

Jakie pojemniki (pojemniki czego)? –

1

Musisz ponownie ustawićClickListeners, aby działało.

W swoim onCreateView możesz bezpośrednio wywołać metodę 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(); 
     } 
    }); 
} 
Powiązane problemy