【问题标题】:How can I pass View parameter (TextView) from OnClickListener to public methode如何将 View 参数(TextView)从 OnClickListener 传递给公共方法
【发布时间】:2016-07-12 18:48:41
【问题描述】:

我正在尝试对不同的视图使用相同的方法。每次,我都想传递一个不同的TextView 来使用,如下:

 ibIncreaseA.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //increase the counter in textView
            increase(view);
        }
    });

ibIncreaseB.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        //increase the counter in textView
        increase(view);
    }
});

这是所需的方法:

public void increase (View textView ){
    int calculatedValue;
    try {
        String counter = textView.getText().toString();
        calculatedValue = Integer.parseInt(counter) + 1;
        tvNumOfTickets.setText(String.valueOf(calculatedValue));
    }catch (Exception e){
        e.printStackTrace();
    }
}

我的问题是方法中的textView不允许我使用.setText()

我怎样才能让它工作?

【问题讨论】:

    标签: java android view textview


    【解决方案1】:

    通过将视图传递给increase() 方法作为 TextView,它可能会为您省去不断向下转换的麻烦。 (即 - 调用increase((TextView)view);

    让你的增加方法接受 TextView 而不是你现在拥有的 View。

    public void increase (TextView textView ){
        ...
    }
    

    【讨论】:

    • 我的观点是一个类级别的变量,很抱歉没有将它包含在问题中。我想传递每个视图,以便方法对传递的视图起作用
    • @ProBul 重写了我的答案,它借鉴了 sush 的答案
    【解决方案2】:

    试试下面的代码

    try {
        String counter = ((TextView)textView ).getText().toString();
        calculatedValue = Integer.parseInt(counter) + 1;
        ((TextView)textView ).setText(String.valueOf(calculatedValue));
    }catch (Exception e){
        e.printStackTrace();
    }
    

    【讨论】:

      【解决方案3】:
       wallet2 = (Button)findViewById( R.id.wallet2 ) ;
      //enter code here
      
       wallet3 = (Button)findViewById( R.id.wallet3 );
      //enter code here
      
       walletlis(wallet2);
      //enter code here
      
       walletlis(wallet3);
      //enter code here
      
      public void walletlis(Button wallet)
      {     
        wallet.setOnClickListener(new View.OnClickListener()
        { 
           //enter code here
         public void onClick(View view)
         { });
        }
      }
      
      //enter code here
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-19
        • 2012-02-24
        • 1970-01-01
        • 2011-07-18
        • 2021-05-26
        • 1970-01-01
        相关资源
        最近更新 更多