Android ViewFlipper с намерением - PullRequest
       26

Android ViewFlipper с намерением

0 голосов
/ 14 октября 2011

Можно ли использовать ViewFlipper между двумя действиями и при одинаковых параметрах отправки между ними?

Как и на первом экране, используются две кнопки, в зависимости от того, какая кнопка должна быть переключена на режим просмотра (с помощью ViewFlipper) и с использованием некоторой другой логики в зависимости от нажатой кнопки.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 14 октября 2011

Я бы просто создал два класса и заставил их раздувать нужный макет.В каждом классе у вас может быть своя логика.Тогда ваша деятельность будет содержать только ViewFlipper и логику для переключения на следующий / предыдущий.

public class ViewFlipperActivity extends Activity {
   public void onCreate( Bundle savedInstanceState ) {
      super( savedInstanceState );
      setContentView( R.layout.my_viewFlipper_lauout );

      flipper = (ViewFlipper) findViewById( R.id.viewFlipper );

      FirstView first = new FirstView( this, flipper ); 
      flipper.addView( first );

      SecondView second = new SecondView( this, flipper );
      flipper.addView( second );

      first.setDataPasser( second );
      second.setDataPasser( first );
   }
}

Первый просмотр

public class FirstView extends LinearLayout implements DataPasser {
   private ViewFlipper flipper;
   private DataPasser dataPasser;

   public FirstView( Context context, ViewFlipper flipper ) {
      super(context);
      inflate( ... );
      this.flipper = flipper;

      // Do other stuff.
   }

   protected void setDataPasser( DataPasser dataPasser ) {
     this.dataPasser = dataPasser;
   }

   //Implement the other methods required by your interface.
}

Второй просмотр

public class SecondView extends LinearLayout {
   private ViewFlipper flipper;
   private DataPasser dataPasser;

   public SecondView( Context context, ViewFlipper flipper ) {
      super(context);
      inflate( ... );
      this.flipper = flipper;

      // Do other stuff.
   }

   protected void setDataPasser( DataPasser dataPasser ) {
     this.dataPasser = dataPasser;
   }

   //Implement the other methods required by your interface.
}

Затем, когда вам нужно изменить представление, когда вы находитесь в FirstView или SecondView, вы вызываете flipper.showNext() или flipper.showPrevious()

EDIT

Для передачи данных между двумя представлениями вы можете реализовать некоторые методы в классе действия для этой цели, а затем позволить двум представлениям содержать ссылку на действие.Другой альтернативой является создание интерфейса, который должны реализовывать два представления:

interface DataPasser {
  void setDataPasser( DataPasser dataPasser ); //To be able to add each view to the other.
  void passData( Data data ); //Or other methods needed to pass the data.
}
0 голосов
/ 14 октября 2011

Имя должно сообщать вам. Вы можете переключаться между двумя представлениями, а не между двумя намерениями. Поэтому лучше попытаться переключаться между двумя представлениями, а не двумя действиями.

...