2012-02-19 3 views
0

Я читал ваши сообщения, и они очень полезны. Тем не менее, мне действительно нужен ваш опытный совет в этом и что бы вы сделали, если бы вы были мной. Я делаю и приложение, в котором есть 4 вкладки. Макет 4 вкладки аналогичен (таблица, которая имеет значения в своих ячейках и 3 кнопки, и текстовое изображение). Единственное, что меняется с одной вкладки на другую, - это значения таблиц и текстовое представление. Тем не менее, мне нужно обмениваться данными между вкладками, так как значения на каждой вкладке зависят от предыдущей вкладкиAndroid: Должен ли я использовать представления или действия для этой вкладки? Могу ли я использовать общий макет для вкладок?

Как, по-вашему, я должен подойти? Я читал, что использование просмотров обычно рекомендуется для активизации. Могу ли я использовать один и тот же макет представления для всех вкладок?

Пожалуйста, любая помощь в том, как вы его проектируете, будет замечательным. Я нахожусь на 2.1 и нацеливаю почти все платформы .THANK U

PS: Я попытался (как пример) иметь textview под рамкой, но проблема в том, что изменение текста в коде Java сделает изменения в тексте во всех вкладки. По какой-то причине я чувствую, что наличие 4 текстовых просмотров (по одному для каждой вкладки) является излишним и плохим дизайном, но я не знаю!

ответ

0

Я бы подошел к этому, указав макет и используя тот же макет в каждой из ваших вкладок. Например.

public class MyTabActivity1 extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.tab_layout); 
    } 
+0

спасибо. Проблема с этим (из моих ограниченных знаний) заключается в том, что если я использую один и тот же макет, то те же самые тексты (ячейки таблицы и другие виды таблиц) имеют одинаковый идентификатор. Это означает, что если я изменил текстовое представление на 3, то одно и то же текстовое представление изменится на вкладках 1, 2 и 4, и я не хочу этого, потому что эти вкладки должны иметь разные текстовые значения. – Snake

+0

Да, у них будут одинаковые идентификаторы, но все в порядке. setContentView() раздувает ваш макет, создавая набор объектов View для используемой деятельности. Каждое действие будет иметь свой собственный набор объектов View. Простым примером такого поведения является ListView, где все элементы используют один и тот же макет, но отображают разные данные. – Macondo2Seattle

+0

Blackrider, Спасибо за ваш ответ. Я все еще смущен чем-то. Поэтому, когда я создаю вкладку с тем же XML-макетом, вы соглашаетесь с тем, что содержимое будет иметь одинаковый идентификатор. Поэтому, если я нахожу findViewById и присваиваю ему идентификатор textview, тогда он вернет мне текст в ON THAT activity? или это будет общий текст (вид статической переменной на вкладках) – Snake

0

Вы можете обратиться за TabHost и TabWidget, чтобы решить вашу проблему. Ниже приведен пример демонстрации для реализации. Tab_Layout.xml:

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <TabHost android:id="@android:id/tabhost" android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <LinearLayout android:layout_width="fill_parent" 
       android:layout_height="fill_parent" android:orientation="vertical" 
       android:paddingTop="4dip"> 

       <TabWidget android:id="@android:id/tabs" 
        android:layout_width="match_parent" android:layout_height="wrap_content" 
        android:layout_weight="0" android:orientation="horizontal" /> 

       <FrameLayout android:id="@+android:id/tabcontent" 
        android:layout_width="match_parent" android:layout_height="0dp" 
        android:layout_weight="1" /> 

      </LinearLayout> 
     </TabHost> 
    </LinearLayout> 
Смежные вопросы