Android按钮侦听器代码最小化必需

时间:2016-01-20 09:17:17

标签: java android

我已经开始开发Android应用程序,不知怎的,我已经设法在活动上创建一个按钮和文本,并在按钮单击我将更改TextView上的文本。 现在的问题是Android按钮监听器代码太长了,我想最小化这段代码?请帮助有没有办法最小化代码

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!");
                }
            }
    );

}

3 个答案:

答案 0 :(得分: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.
         }
  } 

答案 1 :(得分:1)

在您的情况下,AFAIK for clicklistner无论代码如何添加listner&处理点击是我们需要做的,在这种情况下不需要最小化 根据我在您的代码中的意见,只有在你没有使用Button Instance的情况下才能实现优化,因为setOnClickListner是view方法

您可以使用以下三种不同的方式使用,您可以使用最小化/优化的方式。

// 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 listner接口&处理点击

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按钮中提供点击事件

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" />

答案 2 :(得分: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;
        }
    }
}