2015-10-16 18 views
6

Sto cercando di imparare semplici lavori TransitionManager, ma io sono po 'bloccato ...onClick non funziona dopo la transizione

Il mio obiettivo è rendere cambiare tra due scene cliccando sull'immagine. Ma dopo la prima immagine clicca e il primo cambio di scena, non riesco a catturare un'immagine, clicca ...

qui è il mio frammento di codice:

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

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

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

Hai idea di dove sto andando male?

+0

ha trovato qualche risposta? –

risposta

-1

Abbastanza interessante (sebbene sia lo stesso per quasi tutti i tutorial), quando ho cambiato gli ID contenitore, ha iniziato a funzionare. Puoi provare lo stesso metodo per vedere se funziona.

+0

Quali contenitori (contenitori di cosa)? –

1

È necessario impostare onClickListeners di nuovo per farlo funzionare.

In onCreateView è possibile chiamare direttamente il metodo 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(); 
     } 
    }); 
} 
Problemi correlati