开发者

Activity Group Android

I am using activity group for displaying tabview in each intent. But when i press to back button it compiles the parentactivity again. So i have to wait for it. How should i set my OnBackPressed() function to directly open the privious class. this is the code:

public class TabGroupActivity extends ActivityGroup {

    private ArrayList<String> mIdList;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);       
        if (mIdList == null) mIdList = new ArrayList<String>();
    }


  @Override
  public void finishFromChild(Activity child) {
      LocalActivityManager manager = getLocalActivityManager();
      int index = mIdList.size()-1;

      if (index < 1) {
          finish();
          return;
      }

      manager.destroyActivity(mIdList.get(index), true);
      mIdList.remove(index); index--;
      String lastId = mIdList.get(index);
      Intent lastIntent = manager.getActivity(lastId).getIntent();
      Window newWindow = manager.startActivity(lastId, lastIntent);
      setContentView(newWindow.getDecorView());
  }


  public void startChildActivity(String Id, Intent intent) {     
      Window window = getLocalActivityManager().startActivity(Id,intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
      if (window != null) {
          mIdList.add(Id);
          setContentView(window.getDecorView()); 
      }    
  }


  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
      if (keyCode == KeyEvent.KEYCODE_BACK) {
          //preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
          return true;
      }
      return super.onKeyDown(keyCode, event);
  }


  @Override
  public boolean onKeyUp(int keyCode, KeyEvent event) {
      if (keyCode == KeyEvent.KEYCODE_BACK) {
          onBackPressed();
  开发者_StackOverflow社区        return true;
      }
      return super.onKeyUp(keyCode, event);
  }


  @Override
  public void  onBackPressed  () {
      int length = mIdList.size();
      if ( length > 1) {
          Activity current = getLocalActivityManager().getActivity(mIdList.get(length-1));
          current.finish();
      }  
      else{
          finish();
      }
  }
}

Help plsss.


Change the method finishFromChild as below

@Override
public void finishFromChild(Activity child) {
  LocalActivityManager manager = getLocalActivityManager();
  int index = mIdList.size()-1;

  if (index < 1) {
      finish();
      return;
  }

  manager.destroyActivity(mIdList.get(index), true);
  mIdList.remove(index); index--;
  String lastId = mIdList.get(index);
  Intent lastIntent = manager.getActivity(lastId).getIntent();
  lastIntent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
  Window newWindow = manager.startActivity(lastId, lastIntent);
  setContentView(newWindow.getDecorView());

}

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜