Android开发六:栈 ActivityGroup

 //main
    Stack<StackElement> stack;
    LinearLayout mainView;  
    
    //bottom
    Button btnMaterialManage;
    Button btnProductManage;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        
    	super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Helper.mainActivity = this;

        //main
        stack = new Stack<StackElement>();
    	mainView =(LinearLayout)findViewById(R.id.layoutmain);
    	
    	//--------------------------------------------
    	//栈的最底层是主界面
    	//始终处于栈的最底层,除非程序退出,否则不会清空栈。 
    	Intent intent = new Intent(this,MainViewActivity.class);
    	addView(intent,mainView,stack);
    	//--------------------------------------------
    	
    	btnMaterialManage = (Button)findViewById(R.id.btnMaterialManager);
    	btnMaterialManage.setOnClickListener(btnMaterialManageListener);
    	SwithButtonState(false,btnMaterialManage);
    	
    	btnProductManage = (Button)findViewById(R.id.btnProductManager);
    	btnProductManage.setOnClickListener(btnProductManagerListener);
    	SwithButtonState(false,btnProductManage);

    }
    
    //按钮设置
    public void SwithButtonState(boolean isClicked,Button whichButton)
    {
        //点击过
    	if(isClicked)
    	{
    		whichButton.setBackgroundColor(Color.RED);
    		whichButton.setClickable(false);
    	}
    	else
    	{
    		whichButton.setBackgroundColor(Color.GREEN);
    		whichButton.setClickable(true);
		}
    }
    
    
    //产品管理
    public OnClickListener btnProductManagerListener = new OnClickListener(){
    	  public void onClick(View v)
    	  {
    		  clearStack(stack);//仅保留主界面的View
    		  GotoProductManager();
    		  
    		  SwithButtonState(false,btnMaterialManage);
    		  SwithButtonState(true,btnProductManage);
    	  }
    };

    //原料管理
    public OnClickListener btnMaterialManageListener = new OnClickListener(){
  	  public void onClick(View v)
  	  {
  		  clearStack(stack);
  		  GotoMaterial();
  		  
  		  SwithButtonState(false, btnProductManage);
		  SwithButtonState(true,btnMaterialManage);
  	  }
  };
    
    
    /*用来向栈顶添加一个元素并显示*/ 
    public void addView(Intent intent,LinearLayout layout,Stack<StackElement> stacknew)
    {    	 
    	 String str = UUID.randomUUID().toString();  
    	 layout.removeAllViews();
         View view = getLocalActivityManager().startActivity(str, intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();  
         layout.addView(view,new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT));  
         layout.requestFocus();  
         
         /* 生成一个栈内缓存对象,主要包括activity对应的view和对应的key,并压入栈中*/  
         StackElement element = new StackElement(str,view);
         stacknew.add(element);
         Log.i("栈中Activity的个数", String.valueOf(stacknew.size()));
    }
    
    /*弹栈操作*/ 
    int pop(Stack<StackElement> stacknew,LinearLayout layout) {  
        // 先判断是否已经是栈顶元素了  
        int size = stacknew.size();  
        StackElement element = null;  
        if (size > 1) {  
            // 如果不是,获取到栈顶元素,并销毁.然后再获取当前的栈顶元素,显示到activityGroup  
            element = stacknew.pop();  
            getLocalActivityManager().destroyActivity(element.getTag(), true);  
            element = stacknew.peek();  
        } else if (size == 1) {  
            // 如果是栈顶元素,直接显示  
            element = stacknew.peek();  
        }  
        layout.removeAllViews();  
        layout.addView(element.getView());  
        layout.requestFocus();  
        Log.i("栈中Activity的个数", String.valueOf(stacknew.size()) );
        return stacknew.size(); 
    }  
    
    // 清空Stack,仅保留最底层的view 
    void clearStack(Stack<StackElement> stacknew) {  
        int size = stacknew.size();  
        if (size > 1) {  
            for (int i = 0; i < size - 1; i++) {  
            	stacknew.pop();  
            }  
        }  
    }  
  
    void clearAll(Stack<StackElement> stacknew) {  
        int size = stacknew.size();  
        if (size > 0) {  
            for (int i = 0; i < size; i++) {  
                StackElement element = stacknew.pop();  
                getLocalActivityManager().destroyActivity(element.getTag(), true);  
            }  
        }  
    }  
  
    @Override  
    public boolean dispatchKeyEvent(KeyEvent event) {  
        // 对键盘事件的处理,如果当前activityGroup中已经载入了activity,则分发给子activity处理,如果没有则自己处理.  
        if (getCurrentActivity() != null) {  
            return getCurrentActivity().dispatchKeyEvent(event);  
        } else {  
            return super.dispatchKeyEvent(event);  
        }  
  
    }
    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值