2014-02-18 86 views
1

這更像是一個設計問題,以及如何設計應用程序。我一直有與片段的樂趣,但有一點是沒有任何意義的,我是這樣的:Android碎片和邏輯應用程序設計

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     page = getArguments().getInt("someInt", 2); 

     Button btnOne = (Button) getView().findViewById(R.id.one); 

     btnOne.setOnClickListener(new Button.OnClickListener() { 
      public void onClick(View v) { 
       String currentText = getScreen().getText().toString(); 
       currentText += "1"; 
       getScreen().setText(currentText); 
      } 
     }); 
    } 

    // Inflate the view for the fragment based on layout XML 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.standard_calculator, container, false); 
     return view; 
    } 


    /** Return the screen TextView object for manipulation 
    * @return screen 
    */ 
    public TextView getScreen() { 
     return screen; 
    } 

畫面標題是該類中的私有變量,這是不是整個類,但只是部分,我需要幫助我的問題。至少會有15個左右的按鈕來操縱屏幕,並且它不像是一種很好的做法,並將它們全部放在onCreate方法中,我想知道是否將它們放在另一個類中是更好的設計讓片段中的方法對片段的生命週期更具體,儘管可以說片段使用了按鈕,因此應該是類的一部分。也許需要「初始化」方法。

我一直希望有人能夠指導我設計模式或思考應用程序設計的邏輯思路,這是完全不同的。

非常感謝。

+0

我也意識到這會崩潰,因爲我在創建之前引用視圖...但請堅持原始點。 – user2405469

回答

1

將它們放在XML中比在代碼中執行它的功能更少。如果你不希望有XXX匿名方法,可以使你自己的片段/類實現View.onClickListener和實施的onClick方法:在你的onViewCreated

@Override 
public void onClick(final View v) { 
    if (v.getId() == R.id.btn_logout){ 
     // Do One Thing 
    } else if (v.getId() == R.id.btn_about) { 
     // Do Something Else 
    } else if (v.getId() == R.id.btn_shutdown) { 
     // Or Maybe do this :) 
    } 
} 

然後只需用「這個」

分配給每個按鈕
final someBtn = (Button) view.findViewById(R.id.btn_logout); 
someBtn.setOnClickListener(this); 

這可以比一堆匿名方法更清晰,你知道你在一個地方有你的點擊監聽器。

+0

這好多了,我之前在其他一些實踐項目中做過這個。這可能是最乾淨的方式,我不想將它們放在xml中,原因與您所說的相同 - 這不是多功能的,我在嘗試不同的東西時遇到了一些限制。謝謝你的答案:)非常感謝。編輯:我也覺得這是不是很好的耦合,在XML中onclick ...但這只是我 – user2405469

0

您不必在onCreate()方法中全部初始化它們。事實上,你不必在Java代碼中初始化它們。你可以簡單地在xml中定義它們,並在你的xml中定義一個「onClick」屬性。您將在該按鈕中調用您在「onClick」中設置的方法。這是讓您的活動更加清潔的一種方法。