2010-11-19 2 views
-1

У меня есть файл layout.xml с видом на поверхность и различными кнопками.Android Повторное использование SurfaceViews из одного макета xml-файла на двух вкладках tabactivity

Это загружается (setContentView) в два экземпляра класса. Каждый экземпляр представляет собой действие на другой вкладке (в пределах другого класса, который является tabactiviy).

Проблема: если я запустил приложение с tab1 (setCurrentTab) в качестве вкладки открытия, он (tab1) может рисовать на поверхности. Если я устанавливаю tab2 в качестве вкладки открытия, он может рисовать на поверхности. НО переключение между вкладками во время работы, только начальная вкладка может рисовать на поверхности. Как будто начальная вкладка имеет блокировку на поверхности.

Я попытался сделать невидимым (setvisibility) вид на поверхности на неактивной вкладке во время паузы и возобновить, но это просто покрывает (я думаю) копию другой вкладки viewview.

Вопрос: могут ли две вкладки разделять одно изображение на плане? Как вкладка «возобновленная» получает контроль на вкладке «приостановленная»?

PS Я переписан, раздирает, пытался перегрузочным (перестроено несколько способами этого приложения в течение 3-х недель, и я чувствую, что есть что-то об общем макете, что я пропускаю.

ответ

1

Я разрубить этот cade back to the following, и я все еще не могу получить вкладку, отличную от значения по умолчанию, для перерисовки ее просмотра при переходе на вкладку (хотя некоторые части, такие как цвет фона, обновлены правильно. Код ниже.

Я был бы чрезвычайно благодарен за советы, связанные с тем, как это работает. Оно должно показывать «Режим 1» или «Режим 2» в зависимости от выбранной вкладки, но только вкладка, выбранная в tabHost.setCurrentTab (1); строка, НО красная или голубая рамка обновляется.

// ЭТО ТОЧКА ВХОДА ////////////////////////////////////////

общественный класс TabTest расширяет TabActivity
{ Цель намерения; Параметры пачки;

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Resources res = getResources(); 
    TabHost tabHost = getTabHost(); 
    TabHost.TabSpec spec; 
    Intent intent; 

// ШАБЛОН
Намерение = новый Intent() setClass (это, TabContent.class). params = new Bundle(); params.putString ("TABNAME", "Mode 1"); intent.putExtras (params); spec = tabHost.newTabSpec («Шаблон»). SetIndicator («шаблон»,
res.getDrawable (R.drawable.tab_pane)) .setContent (намерение); tabHost.addTab (spec);

// ATTEMPT target = new Intent(). SetClass (это, TabContent2.class); params = new Bundle(); params.putString ("TABNAME", "Mode 2"); intent.putExtras (params); spec = tabHost.newTabSpec («Попытка»). SetIndicator («попытка», res.getDrawable (R.drawable.tab_pane)) .setContent (намерение); tabHost.addTab (спецификация);

tabHost.setCurrentTab(1); 
} 

}

// Tab один содержание ///////////////////////////////// ///////

общественный класс TabContent extends Activity { ScreenWrite s = null; SurfaceView screen_1;

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.content); 

    Bundle params = this.getIntent().getExtras(); 
    String name = params.getString("TABNAME"); 

    screen_1=(SurfaceView)findViewById(R.id.screen_1); 
    s=new ScreenWrite((Context)this, screen_1, name); 
} 

}

// Вкладка Содержание два ///////////////////////////////// ///////

public class TabContent2 extends Деятельность { ScreenWrite s = null; SurfaceView screen_2;

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.content2); 

    Bundle params = this.getIntent().getExtras(); 
    String name = params.getString("TABNAME"); 

    screen_2=(SurfaceView)findViewById(R.id.screen_2); 
    s=new ScreenWrite((Context)this, screen_2, name); 
} 

}

// Макеты содержание ///////////////////////////////// ///////

// и ///// ///////////////////////////////////

////////////////////////////////////////

ФС макеты были усечены из представления, но по существу являются просто держателями для цвета фона и поверхности. Может поставлять, если не ясно

0

Использование SurfaceView немного сложнее, вы можете попробовать вручную установив например:

screen_2.setVisibility (View.GONE)

Когда он теряет фокус, например, через onTabChangedListener.

 Смежные вопросы

  • Нет связанных вопросов^_^