Android 设置getter和setter方法

Android 设置getter和setter方法,android,switch-statement,onclicklistener,getter-setter,Android,Switch Statement,Onclicklistener,Getter Setter,我正在努力使我的代码对开发人员更加友好。最初,我设置了一个带有标准点击监听器的按钮,每次按下该按钮时,编辑文本的值都会增加1 现在,为了让它更有条理,我尝试将点击侦听器移动到它自己的类中,该类将承载一系列switch语句。我遇到的唯一问题是为我的方法设置getter和setter的能力 这是我当前的点击侦听器 testButton.setOnClickListener(new View.OnClickListener() { @Override

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

现在,为了让它更有条理,我尝试将点击侦听器移动到它自己的类中,该类将承载一系列switch语句。我遇到的唯一问题是为我的方法设置getter和setter的能力

这是我当前的点击侦听器

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

                   editHours.setText(Integer.toString(time));
                }
            });
这是我单独的案例陈述,稍后可以链接到

public class MyClickListener implements View.OnClickListener {



@Override
public void onClick(View v) {

    switch (v.getId()){

        case R.id.testingButton:

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


            break;
我只是被困在了设置接球手和二传手的能力上。它使用getter获取当前值,然后最后使用setter设置新值

另外,您还注意到,我没有演示自己的getter和setter,这是因为我对如何使用此方法感到有些困惑


谢谢

我不知道您是否知道这一点,但您不必使用匿名类或单独的类,但可以用xml在按钮上设置
android:onclick=“onClickMethod”
,然后您只需在活动本身中定义方法即可。这将适用于任何方法名称,只要该方法的形式为
public void methodName(视图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自动知道两者是链接的,因此它的所有功能(如FindAges等)都使用此方法


您可以在这里看到更多信息:

根据您对我的上述答案的评论,我建议您执行类似于此答案的操作:,但接口是在侦听器类中定义的,并且在创建新侦听器时将活动提供给侦听器构造函数。否则它也会起同样的作用。根据您可能要编辑的值的数量,它可能会在“活动”中保存或不保存代码行。如果您正在做类似的事情,这也会使侦听器可用于其他活动,因为您可以在每个活动中实现该方法


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

如果我了解您的用例,您不一定需要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));
       }
 }

您想为哪个类设置getter和setter方法?它将为我的OnclickListener类设置,因为当按下按钮时,我需要它在那里获取值。然后在我的主Classic上设置它我还不清楚您的最终设置目标是什么。基本上我不希望所有这些方法都会挤满我的活动,所以我想要一个View.onclick Listener来存储onclick,然后我稍后引用它。e、 setOnclickListener(新方法名)我知道我已经多次使用这个方法了。我只想将我的方法与主活动完全分离,并将它们放在自己的视图中。onClickListener要做到这一点,我认为最简单的方法是使用观察者模式,类似于在活动中使用片段更改信息。这是一种冗余,因为根据定义,OnClickListener正在实现相同的模式,因此这两个类将相互观察。无论哪种方式,我认为无论您如何尝试实现,您都需要在活动中使用另一种方法。我个人会坚持推荐的方法,看起来,您将创建更复杂的代码,这实际上会让其他开发人员更难阅读。我知道您来自何方,但我将要实现的方法数量将超过我的整个活动。是否有办法移动我当前的Onclick侦听器(在第一个代码部分中表示),就我所知,除非它是一个内部类,否则不会出现在a View.Onclick listener?上。或者,您可以尝试将数据存储在活动和侦听器都可以访问的单例类中。通过这种方式,数据与两者分离,您可以随意编辑它,并且您可以让活动侦听数据更改。
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");
    }