2011-10-01 29 views
3

Android上是否有任何全局活動,這樣我就可以將我的代碼放入該活動中,並且會影響我項目中的所有活動?因爲相同的代碼是寫在多個活動,如KeyEvent.KEYCODE_BACK我可以將我的代碼組合成某種「全局活動」嗎?

例如,這發生在我這裏我用:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
      try { 
       final Intent itnt_BackServices = new Intent(this, 
         BackServices.class); 
       AlertDialog.Builder alertbox = new AlertDialog.Builder(this); 
       alertbox.setTitle("Touch signs"); 
       alertbox.setMessage("Do you want to quit!"); 
       alertbox.setPositiveButton("Yes", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface arg0, int arg1) { 
           stopService(itnt_BackServices); 
           mPlayer.stop(); 

           finish(); 
          } 
         }); 
       alertbox.setNegativeButton("No", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface arg0, int arg1) { 
          } 
         }); 
       alertbox.show(); 
      } catch (Exception e) { 
       // TODO: handle exception 
      } 
     } 
     return false; 
    } 

我複製並粘貼在每一項活動,我寧願使用某種全球活動。

+0

只是爲了注意如果你的應用程序不是一個遊戲,確認退出是不好的UX – weakwire

回答

17

您可以創建一個類,擴展Activity,然後將CustomActivity擴展到所有Activity類。

public abstract class CustomActivity extends Activity{ 

    public abstract void initComponents(); // you can create a abstract method 
    public abstract void addListner();  // you can create a abstract method 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 

     if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
       // your stuff here.... 
      } 
     return true; 
    } 
} 

現在你可以extend這個classextend任何類Activity

+1

+1同意創建抽象類。 –

+0

這是非常有用的謝謝你。 – Nick

0

把你的第一個主要活動編寫代碼放在那裏,然後簡單地用這個活動擴展所有其他活動.....例如。 MainActivity是您的第一個主要活動,然後在此處編寫此代碼,然後簡單地進行一個活動說出來然後使用MainActivity而不是Activity來擴展它。這就是它..........

0

我建議像@Lalit Poptani建議的那樣擴展活動。既然這樣說,我可以提供一個替代方法來實現這一點。

您可以創建您在活動實現包括公共布爾的onkeydown(INT的keyCode,KeyEvent的事件)的接口(只是爲了讓你的提醒,你必須執行的代碼到你的活動)

創建一個全局(靜態)類/執行onKeyDown操作的函數。

public class ButtonHandler{ 

public static boolean handleButton(Context context,int keyCode, KeyEvent event){ 

..... your code here 

} 

}

,只是叫return ButtonHandler.handleButton(getApplicationContext(),keycode,event)onKeyDown方法。

但仍然..最重要的活動是最好的方式去。如果由於某種原因你不想延長這是要走的路

相關問題