2013-05-27 23 views
0

我有以下的ActivityGroup的ActivityGroup推startactivityforresult

public class ActivityStack extends ActivityGroup{ 

    public static int settingsFlag=0; 
    private Stack<String> stack; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (stack == null) 
      stack = new Stack<String>(); 
     // start default activity 
     settingsFlag=1; 
     push("FirstStackActivity", new Intent(this, ChannelsActivity.class)); 
    } 

    @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) 
     { 
      if (getParent() instanceof MainActivity) { 
       ((MainActivity) getParent()).changeToMainTabs(); 
      } 
     } else { 
     LocalActivityManager manager = getLocalActivityManager(); 
     manager.destroyActivity(stack.pop(), true); 
     if (stack.size() > 0) { 
      Intent lastIntent = manager.getActivity(stack.peek()).getIntent(); 
      Window newWindow = manager.startActivity(stack.peek(), lastIntent);  
      setContentView(newWindow.getDecorView()); 
     } 
     } 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     //what is the current activity? 
     menu.add(0, 0, 0, "holder"); 
     return true; 
    } 

    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) 
    { 
     //start a new 
     menu.clear(); 
     //add some menu options 
     getLocalActivityManager().getCurrentActivity().onPrepareOptionsMenu(menu); 
     return super.onPrepareOptionsMenu(menu); 
    } 
} 

而且我有这样的代码在另一个活动:

editTxt.setOnClickListener(new OnClickListener() { 
         @Override 
         public void onClick(View arg0) { 
          Intent countryIntent = new Intent(); 
                countryIntent.setClass(getParent(),Test.class); 
          //startActivityForResult(countryIntent, requestCode); 

          ActivityStack activityStack = (ActivityStack) getParent(); 
          **activityStack.push("SecondActivity", startActivityForResult(countryIntent, requestCode)); //!!THIS SI NOW WORKING CASE IT EXPECTS AN INTENT** 
         } 
        }); 

我怎样才能使这项工作?有人可以帮忙吗?

+0

而你的问题是什么? – Pragnani

+0

我的问题是,我不知道如何使用ActivityGroup解决startActivityForResult。我已经编辑我的代码 –

+0

检查我的答案在这里http://stackoverflow.com/questions/16558628/startactivityforresult-from-activitygroup/16559391#16559391 – Pragnani

回答

2

对于接收推送尝试在你的主要群体活动”

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
//code for receive the data 
    } 

手段将下面的代码把上面的代码中ActivityStack活动

+0

所以我应该把activityStack.push(“SQecondActivity,countryIntent)?或者我应该在push方法中有什么?我知道我需要在activity的结果中使用metnof,以防我有startActivityForResult。我编辑我的代码 –

+0

yes因为它会将值返回给它的父母而不是孩子你必须把它和编辑 –

+0

感谢您的重播,但我不需要使用onActivityResult。我已经改变了我的代码和意图。 \t意图lastIntent = manager.getActivity(stack.peek())。getIntent(); –