乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      android 在ActivityGroup里執(zhí)行跳轉(zhuǎn)

       herozhou1314 2012-04-13
      android 在ActivityGroup里執(zhí)行跳轉(zhuǎn)
      2011-05-18 13:17

      在工作中使用ActivityGroup的時(shí)候犯了一個(gè)嚴(yán)重的錯(cuò)誤,后來經(jīng)過頭的點(diǎn)播,才豁然開朗,明白了這中間的道理,現(xiàn)在這些心得記錄下來。
          在剛開始接觸ActivityGroup的時(shí)候我把它當(dāng)成了J2EE中的框架集(framset)來使用,framset也是可以同時(shí)加載多個(gè)jsp頁面。而ActivityGroup也是是可以管理多個(gè)Activity,很容易就把他當(dāng)成framset 來看待。
      其實(shí)不然,我們知道在Android中只允許一個(gè)Activity活動(dòng)在當(dāng)前界面,在這里我們就不能同時(shí)讓多個(gè)Activity同時(shí)存活在ActivityGroup中,當(dāng)我們加載一個(gè)Activity到ActivityGroup中來的時(shí)候我們要做的就是移除其他的存在于當(dāng)前 ActivityGroup中的view,然后加載需要的Activity到當(dāng)前的ActivityGroup中來。
        LinearLayout container=(LinearLayout)((ActivityGroup)getParent()).getWindow().findViewById(R.id.body);//注意這里,還是獲取group的view
              container.removeAllViews();
              Intent intent=new Intent(a.this,b.class);
              intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
              Window subActivity=((ActivityGroup)a.this.getParent()).getLocalActivityManager().startActivity(“l(fā)ocallist”,intent);
              container.addView(subActivity.getDecorView());       
      下面這些是從LocalActivityManager.startActivity()官方文檔翻譯過來的:
          給你將要啟動(dòng)的Activity設(shè)置一個(gè)唯一的字符串ID與之關(guān)聯(lián),因此,如果你以后調(diào)用startActivity()的上一次相同的活動(dòng)對象將被保留。
      當(dāng)以前的活動(dòng)根據(jù)這個(gè)ID開始,就可能要么被摧毀,以一個(gè)新的開始,或者當(dāng)前的一個(gè)再利用。
          如果當(dāng)前活動(dòng)采用非多重啟動(dòng)模式(如singleTop),或意圖有Intent.FLAG_ACTIVITY_SINGLE_TOP標(biāo)志設(shè)置,那么當(dāng)前活動(dòng)將繼續(xù)運(yùn)行,Activity.onNewIntent()方法調(diào)用。
          如果新的意圖是與前一個(gè)相同,而新的意圖沒有Intent.FLAG_ACTIVITY_CLEAR_TOP設(shè)置,那么當(dāng)前的活動(dòng)將繼續(xù)運(yùn)行原樣。否則,目前的活動(dòng)將結(jié)束,一個(gè)新的開始。
      有一個(gè)問題,即,如果其目的不包括一個(gè)明確的組成部分,我們可以恢復(fù),這比以前運(yùn)行時(shí)的狀態(tài)被保存不同的活動(dòng)課的狀態(tài)(如果可用的活動(dòng)點(diǎn)之間的變更集)。
      getDecorView():
      新添加窗口到窗口管理器中。
      當(dāng)我們要從b.class中跳轉(zhuǎn)回到a.clas的時(shí)候,我們要先找到他對應(yīng)的資源ID號,然后執(zhí)行和上面跳轉(zhuǎn)一樣的操作。
      LinearLayout container=(LinearLayout)((ActivityGroup)getParent()).getWindow().findViewById(R.id.body);//注意這里,還是獲取group的view
       container.removeAllViews();
        Intent intent=new Intent(b.this,a.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        ((ActivityGroup)b.this.getParent()).getLocalActivityManager().removeAllActivities();
          Window subActivity=((ActivityGroup)b.this.getParent()).getLocalActivityManager().startActivity(”locallist“,intent);
         container.addView(subActivity.getDecorView());   
      這里就是關(guān)于在ActivityGroup中的跳轉(zhuǎn)和向回跳轉(zhuǎn)的方法。要特別注意的是只能允許一個(gè)Activity活動(dòng)在當(dāng)前的ActivityGroup 中。當(dāng)你startActivity的時(shí)候會(huì)按照你給定的資源ID去ActivityManager中去查找Activity,這個(gè)Activity只有兩種狀態(tài),要么存在要么被銷毀了。
      另外就是在acitivityGroup中捕獲返回鍵的按鍵事件,我們通常是這樣處理的
      public boolean onKeyDown(int keyCode, KeyEvent event) {
              // TODO Auto-generated method stub
              if(keyCode==KeyEvent.KEYCODE_BACK)
              {
                 //這里放捕獲按鍵處理事件
              }
              return super.onKeyDown(keyCode, event);
          }
          我們會(huì)發(fā)現(xiàn)我們捕獲按鍵沒用了,很多人就會(huì)誤以為ActivityGroup按鍵事件的優(yōu)先級高于Activity的按鍵事件的優(yōu)先級。其實(shí)這也是一個(gè)誤區(qū),他們的按鍵事件是優(yōu)先級是一樣的,不存在誰的優(yōu)先級高于誰 ,只是我們這里對按鍵事件的處理有一些問題,我們應(yīng)該這樣做:
      public boolean onKeyDown(int keyCode, KeyEvent event) {
              // TODO Auto-generated method stub
              if(keyCode==KeyEvent.KEYCODE_BACK)
              {
                  //這里放捕獲按鍵處理事件
                  return true;
              }else
              return super.onKeyDown((keyCode, event);//除了捕獲你想要的返回鍵之外,其余的應(yīng)該交給他的父類去處理
       }
      這些只是我的個(gè)人理解,如有錯(cuò)誤還望大家多多指教!

      源碼下載地址:http://download.csdn.net/source/3292686

      運(yùn)行效果如下:

      圖1:抽屜未打開                                                                           圖2:打開抽屜

      圖3:跳轉(zhuǎn)前                                                                                 圖4:跳轉(zhuǎn)后




        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多