2015-06-17 3 views
0

Я реализую tabhost с 5 вкладками. На 5-й вкладке у меня есть активная группа с 2 дочерними активностями. От дочерней активности, если я нажму кнопку «Назад», приложение вернется к родительской активности ,Обращение с табуляцией внутри группы действий для повторного нажатия на функциональность

Но то, что мне нужно, - это нажать кнопку вкладок, и она должна вернуться к родительской активности.

это моя деятельность группа:

public class Activitygroup extends ActivityGroup { 
private Stack<String> stack; 
public static Activitygroup grp; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    grp = new Activitygroup(); 
    if (stack == null) { 
     stack = new Stack<String>(); 
    } 

    push("HomeStackActivity", new Intent(this,Extras.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 
} 

@Override 
public void finishFromChild(Activity child) { 
    pop(); 
} 

@Override 
public void onBackPressed() { 
    pop(); 
} 

public void push(String id, Intent intent) { 
    Window window = getLocalActivityManager().startActivity(id, 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 
    if (window != null) { 
     stack.push(id); 
     setContentView(window.getDecorView()); 
    } 
} 

public void pop() { 
    if (stack.size() == 1) { 
     finish(); 
    } 
    LocalActivityManager manager = getLocalActivityManager(); 
    manager.destroyActivity(stack.pop(), true); 
    if (stack.size() > 0) { 
     Intent lastIntent = manager.getActivity(stack.peek()).getIntent() 
       .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     Window newWindow = manager.startActivity(stack.peek(), lastIntent); 
     setContentView(newWindow.getDecorView()); 
    } 
} 

это где я обработка второй вкладки нажмите в tabhost деятельности:

int numberOfTabs = tabHost.getTabWidget().getChildCount(); 
    for (int t = 0; t < numberOfTabs; t++) { 
     tabHost.getTabWidget().getChildAt(t).setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       if (event.getAction() == MotionEvent.ACTION_UP) { 

        String currentSelectedTag = MainActivity.this.getTabHost().getCurrentTabTag(); 
        String currentTag = (String) v.getTag(); 

        if (currentSelectedTag.equalsIgnoreCase(currentTag)) { 
         MainActivity.this.getTabHost().setCurrentTabByTag(currentTag); 
         String newSelectedTabTag = MainActivity.this.getTabHost().getCurrentTabTag(); 

         if (newSelectedTabTag.toLowerCase().indexOf("extras") != -1) { 

    "BACKPRESS FUNCTIONALITY"-MUST BRING THE PARENT ACTIVITY ON TOP HERE 
         } 
         return true; 
        } 
       } 
       return false; 
      } 
     }); 
    } 

Iphone имеет эту функцию с помощью default.On вкладки нажатия на текущей деятельности это приносит родительскую деятельность сверху. Пожалуйста, предложите мне некоторое обходное решение для этого. Спасибо заранее!

ответ

0

Этот код используется для измерения вкладок нажмите от детской активности

int numberOfTabs = tabHost.getTabWidget().getChildCount(); 
for (int t = 0; t < numberOfTabs; t++) { 
    tabHost.getTabWidget().getChildAt(t).setOnTouchListener(new  View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_UP) { 

       String currentSelectedTag = MainActivity.this.getTabHost().getCurrentTabTag(); 
       String currentTag = (String) v.getTag(); 

       if (currentSelectedTag.equalsIgnoreCase(currentTag)) { 
        MainActivity.this.getTabHost().setCurrentTabByTag(currentTag); 
        String newSelectedTabTag = MainActivity.this.getTabHost().getCurrentTabTag(); 

        if (newSelectedTabTag.toLowerCase().indexOf("extras") != -1) { 

     ****Here call a static method to check whether the child activity is active**** 
        childactivity.getappcontext(); 
        } 
        return true; 
       } 
      } 
      return false; 
     } 
    }); 
} 

В детской деятельности вставьте code.If ребенок активность активен, то он будет закрыт при нажатии на вкладку, следовательно, родительские активность будет видна.

@Override 
public void onStart() { 
    super.onStart(); 
    active=true; 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    active=false; 
} 


public static void getAppContext() { 
    if(active){ 
     System.out.println("gallery"); 
     galleryActivity1.finish(); 
    } 
} 

Не стесняйтесь спрашивать, не ясно. Будем рады помочь.