2016-01-20 63 views
0

我已經開始在Android應用程序開發和設法做一個按鈕和文本的活動和按鈕單擊我將更改TextView上的文本。 現在的問題是Android按鈕偵聽器代碼太長,我想盡量減少此代碼?請大家幫忙有沒有什麼方法可以最小化代碼Android Button監聽器代碼最小化要求

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button ArsalButton = (Button)findViewById(R.id.ArsalButton); 
    final TextView ArsalText = (TextView)findViewById(R.id.ArsalText); 
    ArsalButton.setOnClickListener(
      new Button.OnClickListener(){ 
       public void onClick(View v){ 
        ArsalText.setText("You Done it!"); 
       } 
      } 
    ); 

} 
+0

無需將其最小化 – jhamon

+0

在您的活動或片段中使用實現OnClickListener – Brendon

+0

在活動佈局的android:onClick屬性中定義方法 – Nambi

回答

1

有沒有必要最小化這個代碼,直到你有這個單一按鈕。但是如果你的屏幕上有多個按鈕,並且你想爲所有的按鈕設置點擊監聽器,那麼這不是一個好方法。在這種情況下,您的代碼應如下所示:

public class YourActivity extends Activity implements Button.OnClickListener { 

     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button ArsalButton = (Button)findViewById(R.id.ArsalButton); 
     final TextView ArsalText = (TextView)findViewById(R.id.ArsalText); 
     ArsalButton.setOnClickListener(this); 

     } 

     @Override 
     public void onClick(View v) { 
      // get view id and perform operation based on id. 
     } 
    } 
+0

感謝您的幫助我正在設計一個包含多個按鈕的界面,方法將幫助! –

0

您不需要將其最小化。但是,你有替代它:

要設置監聽器中的XML:

<Button 
    android:id="@+id/myButton" 
    ... 
    android:onclick="myButtonClick" 
/> 

然後,你需要聲明myButtonClick方法在您的活動。

public void myButtonClick(View view){ 
    ArsalText.setText("You done it"); 
} 

或者在您的活動,以實現OnClickListener:

public class MyActivity extends Activity implements View.OnClickListener{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     ... 
     ArsalButton.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View view){ 
     switch (view.getId()){ 
      case R.id.myButton: 
       ArsalText.setText("You Done It"); 
       break; 
     } 
    } 
} 
1

在你的情況據我所知的一切,如添加聽者&處理點擊的代碼是必需的,我們需要做的clicklistner,在這種情況下,沒有需要最小化 根據我的意見,在您的代碼優化是可能的,只有在情況下,如果你不使用按鈕實例任何地方給予直接點擊事件查看實例爲setOnClickListner是查看方法

以下三種不同的方式可以給你,你可以使用哪一種你發現最小化/優化。

// if button or textview instance is not required any where outside than 
     // Button ArsalButton = (Button)findViewById(R.id.ArsalButton); 
     //final TextView ArsalText = (TextView)findViewById(R.id.ArsalText); 
     findViewById(R.id.ArsalButton).setOnClickListener(
       new Button.OnClickListener() { 
        public void onClick(View v) { 
         ((TextView) findViewById(R.id.ArsalText)).ArsalText.setText("You Done it!"); 

        } 
       } 
     ); 

第二種方式是像實現onlclick聽者接口&手柄單擊

public class YourActivity extends Activity implements Button.OnClickListener { 

     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      findViewById(R.id.ArsalButton).setOnClickListener(this); 
      // if button or textview instance is not required any where outside than 
      // Button ArsalButton = (Button)findViewById(R.id.ArsalButton); 
      //final TextView ArsalText = (TextView)findViewById(R.id.ArsalText); 
      findViewById(R.id.ArsalButton).setOnClickListener(
        new Button.OnClickListener() { 
         public void onClick(View v) { 


         } 
        } 
      ); 

     } 

     @Override 
     public void onClick(View v) { 
      ((TextView) findViewById(R.id.ArsalText)).ArsalText.setText("You Done it!"); 
     } 
    } 

另一種方式是像XML按鈕給予click事件

public class YourActivity extends Activity { 

     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
     } 

     public void onArsalButtonClick(View view) { 
      ((TextView) findViewById(R.id.ArsalText)).ArsalText.setText("You Done it!"); 
     } 

    } 

    <Button 
     android:id="@+id/ArsalButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:onClick="onArsalButtonClick" 
     android:text="ArsalButton" />