2016-01-20 60 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" />