2012-03-30 41 views
3

我的應用程序在窗口頂部有操作欄。哪裏有一些按鈕。按鈕計數和功能正在改變,取決於用戶的活動。創建按鈕並將功能分開android

我想寫與方法addFirstButtonremoveFirstButton等一類。 所以我其他類我想這樣做:

MyButtons myButtons = new MyButtons();  
myButtons.addFirstButton(); 

所以就有了一切好的,但如何建立一個監聽器按鈕,如果我想這樣做?

通常我會做到這一點:

Button backButton = (Button) customNav.findViewById(R.id.back);  
    backButton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Toast.makeText(Action_Bar_TestingActivity.this, "BACK", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

但我想,這將是在MyButtons的類和方法以某種方式將返回一個偵聽器的行動。

所以,如果這可能的任何想法?

謝謝。

回答

1

如果您正在編寫一個操作欄,那麼您可以在onOptionsItemSelected()中處理其「按鈕」。有關更多信息,請參見此處:http://developer.android.com/guide/topics/ui/menus.html

如果您支持Android 1.6-2.x,則可以製作ActionBarCompat示例應用程序的副本。它將使用一些與> = 3.x ActionBar相同的XML標誌,但並不是所有的功能都是模擬的。你也可以考慮使用Action Bar Sherlock。

如果你想設置並獲取你的onClickListeners,你可以。沒有說你必須實例化按鈕內部的點擊監聽器。但你必須做一些簿記。至少,實例化監聽你的按鈕陣列之外,並傳遞它

下面是我如何做一個獨立的點擊收聽:

Button.OnClickListener mTakePicOnClickListener = 
    new Button.OnClickListener() { 
    public void onClick(View v) { 
     dispatchTakePictureIntent(ACTION_TAKE_PHOTO_B); 
    } 
}; 

這裏的地方我將其連接到一個按鈕(小例子):

private void setBtnListener( 
     Button btn, 
     Button.OnClickListener onClickListener) { 
     btn.setOnClickListener(onClickListener);    
} 

(如果你想看看這個功能應該有的樣子,這是Capturing Photos示例應用程序的一部分。)

但我認爲你可以看到你可以使用MyButtons的內部函數。

+0

我使用ActionBarSherlock並創建了自己的佈局 – Streetboy 2012-03-30 09:01:27

0

或硬盤的方式代碼:

final Button backButton = null; 
    final LinearLayout navBar = (LinearLayout) customNav.findViewById(R.id.root); 
    Button addButton = (Button) customNav.findViewById(R.id.add_button); 
    addButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) 
     { 
      if (backButton == null) 
      { 
       backButton = new Button(this); 
       backButton.setText("Back"); 
       backButton.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) 
        { 
         Toast.makeText(Action_Bar_TestingActivity.this, "BACK", Toast.LENGTH_SHORT).show(); 
        } 
       }); 
       navBar.addView(backButton); 
       addButton.setText("Remove Back button"); 
      } 
      { 
       navBar.removeView(backButton); 
       backButton = null; 
       addButton.setText("Add Back button"); 
      } 
     } 
    });