设置getter和setter方法

时间:2017-02-23 16:43:47

标签: android switch-statement onclicklistener getter-setter

我正在努力让我的代码更加开发人员友好。最初我设置了一个带有标准点击监听器的按钮,每次按下它时,编辑文本的值就会增加1。

现在为了尝试让它更有条理我试图将点击监听器移动到它自己的类,它将托管一系列switch语句。我遇到的唯一问题是能够为我的方法设置一个getter和setter。

这是我目前的点击监听器

$(document).on('onComplete.fb', function( e, instance, slide ) {
    // Your code goes here
});

这是我单独的案例陈述,可以在以后链接。

 testButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int time = Integer.valueOf(editHours.getText().toString());
                    time++;

                   editHours.setText(Integer.toString(time));
                }
            });

我只是坚持设置getter和setter的能力。使用getter获取当前值,然后最后使用setter设置新值。

另外作为旁注,你注意到我没有展示我自己的getter和setter,因为我对这个方法的操作方式有点困惑。

谢谢

4 个答案:

答案 0 :(得分:0)

我不知道你是否知道这一点,但你不必使用匿名类,或者根本不需要单独的类,但是可以在xml中的按钮上设置android:onclick="onClickMethod",然后你只需要定义活动本身的方法。这将适用于任何方法名称,只要该方法的格式为public void methodName(View v)实际上这是在官方Android开发人员培训和参考中推荐的。因此,我会参加我的活动课程:

public void onTestClick(View v) {
    int time = Integer.valueOf(editHours.getText().toString());
    time++;

    editHours.setText(Integer.toString(time));
}

和xml:

<Button 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onTestClick"
    />

我通常使用此方法,因为开发人员可以查看xml并查看方法名称,然后转到活动并查看它正在做什么。我的眼睛也比匿名类更不凌乱,在任何情况下,我可能想要以编程方式运行相同的代码,我可以访问该方法。此外,AndroidStudio会自动知道两者是否已链接,因此其所有功能(如findusages等)都可以使用此方法。

您可以在此处查看有关此内容的更多信息:https://developer.android.com/reference/android/widget/Button.html

答案 1 :(得分:0)

基于您对上述答案的评论,我建议您做一些类似这样的答案:https://stackoverflow.com/a/9977370/4888701,除了在您的监听器类中定义接口,并在创建新接口时将活动提供给监听器构造函数监听器。否则它会起作用。根据您可能正在编辑的值的数量,它可能会在活动中保存您的代码行。如果您正在执行类似的操作,这也会使侦听器可重用于其他活动,因为您可以在每个活动中实现该方法。

如果这会增加太多代码,您可以尝试将Listener类定义为Activity中的私有内部类。这样你就可以访问这些值,但至少可以选择在查看代码时隐藏类内容。

答案 2 :(得分:0)

如果我了解您的用例,您不一定需要getter / setter。为什么不使用类似的东西:

public class EditTextIncrementor implements View.OnClickListener {
        private final EditText editText;

        public EditTextIncrementor(EditText editText){
            this.editText = editText;
        }


       @Override
       public void onClick(View v) {
           String counter = editText.getText().toString();
           int time = Integer.valueOf(counter);
           time++;
           editText.setText(Integer.toString(time));
       }
 }

答案 3 :(得分:0)

public class MyClickListener extends AppCompatActivity implements View.OnClickListener {

EditText editHours;
Button testButton;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    editHours = (EditText)findViewById(R.id.editHours);
    testButton = (Button)findViewById(R.id.testingButton);



     testButton.setOnClickListener(new MyClickListener());
}

@Override
public void onClick(View v) {



    switch (v.getId()){


        case R.id.testingButton:

            Log.i("Test", "Complete");

            int time = Integer.valueOf(editHours.getText().toString());
            time++;

            editHours.setText(Integer.toString(time));




            break;

        default:
            Log.i("Test", "Complete");
    }