Intereting Posts
Как отключить автоматическое отображение консолей АБР в Eclipse? EditText setError () без сообщения только значок Admob can not find transfer funds link в google admob panel Bluetooth 4.0 / Smart / Низкая энергия на Samsung Galaxy S3 Как установить равный размер шрифта в ячейках таблицы для мобильных устройств html-страниц Распространение анимации ListView для элементов работает только после второго щелчка Howto в eclipse отлаживает файл obfuscated apk Proguard Почему я должен подписывать APK приложения до выпуска Уведомление о подключении USB Java howto ArrayList push, pop, shift и unshift Совместное использование экрана Android (Root) Android Lollipop знает, есть ли приложение в качестве доступа к статистике использования Java.lang.ClassCastException: android.widget.LinearLayout не может быть добавлен в android.widget.ListView Откуда появляется дополнительное пространство вокруг моей кнопки? Отладка модулей C ++ / родной библиотеки, не работающих с Android Studio (используется Cmake)

Android. Как изменить активность в одной вкладке

Следующая ситуация: у меня есть TabActivity, например, три вкладки, TabA, TabB, TabC.

Есть кнопка в действии (Act_C_1) TabC. Поэтому, если пользователь нажимает на эту кнопку, в TabC должно появиться другое действие (Act_C_2).

Я заранее благодарю вас за любые предложения или идеи.

Mur

UPD:

Вот мой код

TabActivity с тремя действиями:

public class TabScreen extends TabActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tab_menu); TabHost tabHost = getTabHost(); // The activity TabHost TabHost.TabSpec spec; // Resusable TabSpec for each tab Intent intent; // Reusable Intent for each tab intent = new Intent().setClass(this, SecondActivity.class); // Initialize a TabSpec for each tab and add it to the TabHost spec = tabHost.newTabSpec("tab_1").setIndicator("Tab1",null).setContent(intent); tabHost.addTab(spec); intent = new Intent().setClass(this, ThirdActivity.class); // Initialize a TabSpec for each tab and add it to the TabHost spec = tabHost.newTabSpec("tab_2").setIndicator("Tab2",null).setContent(intent); tabHost.addTab(spec); intent = new Intent().setClass(this, FourthActivity.class); spec = tabHost.newTabSpec("tab_3").setIndicator("Tab3",null).setContent(intent); tabHost.addTab(spec); } } 

Активность «Act_C_1» или FourthActivity.java:

 public class FourthActivity extends Activity implements OnClickListener { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fourth); Button BtnWeiter = (Button)findViewById(R.id.BtnWeiter); BtnWeiter.setOnClickListener(this); } @Override public void onClick(View v) { // I also tried to use LocalActivityManager // TabActivity parentTabActivity = (TabActivity) getParent(); // LocalActivityManager manager = parentTabActivity.getLocalActivityManager(); // manager.destroyActivity("tab_3", true); // manager.startActivity("tab_3", new Intent(this, FourthActivity.class)); finish(); startActivity(new Intent(this, FourthActivity.class)); } } 

Solutions Collecting From Web of "Android. Как изменить активность в одной вкладке"

Действия на вкладке можно переключать следующим образом.

Сначала давайте понять поток:

  1. У нас есть вкладка «Хост», активность (скажем, список), из которой нам нужно перейти к следующему действию (например, детали для щелкнутого элемента) на той же вкладке. Для этого мы можем использовать концепцию замены активности. Также устанавливаем флажки для выбранной вкладки и другие, зная, что детали отображаются сейчас

  2. Когда мы нажимаем назад, мы должны получить предыдущее действие под одной и той же вкладкой. Для этого вместо повторной замены активности мы можем обновить вкладку, используя выбранный флажок для выбранной вкладки. Кроме того, если флаг для сведений о показах истинен, мы перейдем к списку на той же вкладке, иначе мы перейдем к активности перед tabwidget (обычное использование onBackPressed)

Код может быть следующим.

  1. Для перехода от списка к деталям …

(Это может быть в onClickListener)

 private OnClickListener textListener = new OnClickListener() { @Override public void onClick(View v) { Constants.SHOW_DETAILS = true; Intent intent = new Intent(context, DetailsActivity.class); replaceContentView("activity3", intent); } }; public void replaceContentView(String id, Intent newIntent) { View view = ((ActivityGroup) context) .getLocalActivityManager() .startActivity(id, newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) .getDecorView(); ((Activity) context).setContentView(view); } 
  1. Когда будет нажата клавиша «назад», мы переопределяем на BackPressed в каждом из Activity под вкладкой, чтобы снова перейти к списку на экране сведений

     @Override public void onBackPressed() { // TODO Auto-generated method stub super.onBackPressed(); if (MathHelper.SHOW_DETAILS) { Log.e("back", "pressed accepted"); Constants.LIST_ACTIVITY = 1; Constants.SHOW_DETAILS = false; Intent intent = new Intent(this, Tab_widget.class); startActivity(intent); finish(); } } 

Самая важная часть здесь – Constants.LIST_ACTIVITY = 1; Он указывает, на какой вкладке мы находимся. Поэтому соответствующие действия будут иметь значение 0,1,2 … и т. Д.

Снова, чтобы загрузить правильный список (Activty), когда активность вкладки обновлена, мы должны включить это в TabWidget onCreate после создания вкладок

 tabHost.setCurrentTab(Constants.LIST_ACTIVITY); 

Просто используйте флаг Intent.FLAG_ACTIVITY_CLEAR_TOP, чтобы заменить действие для необходимой вкладки.

 intent = new Intent().setClass(this, YourActivity.class); spec = tabHost.newTabSpec("tab1").setIndicator("Tab1",null) .setContent(intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); tabHost.addTab(spec); 

Просто добавьте это для всех вкладок:

 yourTabHost.getChildAt(0).setOnClickListener(new OnClickListener() { public void onClick(View v) { getTabHost().setCurrentTab(0); } }); 

Обрабатывать событие onClick для кнопки

Finish (). Добавьте метод startActivity, чтобы начать другое действие.

благодаря