【问题标题】:Android: How to use a Onclicklistener in a class fileAndroid:如何在类文件中使用 Onclicklistener
【发布时间】:2014-07-23 20:20:49
【问题描述】:

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

protected void onCreate(Bundle paramBundle) {
    super.onCreate(paramBundle);
    setContentView(R.layout.lr);
new PINT();
}


}

Pint.java

public class Pint {

puclic void Pint()
{
}

public void PINT(View view) {
    switch (view.getId()) {
    case (R.id.rightleft):
        X(0);
        break;
    case (R.id.rightleft):
        X(1);
        break;
    }
}

public void X(int x) {
    if (x == 0) Toast.makeText(getApplicationContext(), "Left",
                    Toast.LENGTH_SHORT).show();
    if (x == 1) Toast.makeText(getApplicationContext(), "Right",
                    Toast.LENGTH_SHORT).show();
        }
    }
}

}

运行上面的代码失败,我希望能够使用类文件中的 onclicklister,我将如何去做?

xml 中的所有内容都只是两个按钮

【问题讨论】:

  • 为什么不在 Activity 中定义 OnClickListener?
  • 为什么要在单独的班级里做?
  • 主要是为了可读性
  • 这段代码实际上无法编译。
  • @Shlubu 如果你读过我说的,你就会知道,我说'运行上面的代码失败'

标签: java android class onclicklistener


【解决方案1】:

这是我的建议:

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

     protected void onCreate(Bundle paramBundle) {
          super.onCreate(paramBundle);
          setContentView(R.layout.lr);
     }

     @Override
     public void onClick(View v) {
          switch (view.getId()) {
               case (R.id.rightleft):
                    X(0);
                    break;
               case (R.id.rightleft):
                    X(1);
                    break;
          }
     }

     public void X(int x) {
          (x == 0) 
               Toast.makeText(getApplicationContext(), "Left",      
               Toast.LENGTH_SHORT).show();
          (x == 1) 
               Toast.makeText(getApplicationContext(), "Right",
               Toast.LENGTH_SHORT).show();
     }
}

【讨论】:

    【解决方案2】:

    类文件必须扩展 View 类之一才能使 OnClickListener 工作。

    除此之外,这是什么?(

    public void X(int x) {
    (x == 0) Toast.makeText(getApplicationContext(), "Left",
                    Toast.LENGTH_SHORT).show();
    (x == 1) Toast.makeText(getApplicationContext(), "Right",
                    Toast.LENGTH_SHORT).show();
        }
    

    我猜你错过了 if 声明:

    public void X(int x) {
    if(x == 0) {Toast.makeText(getApplicationContext(), "Left",
                    Toast.LENGTH_SHORT).show();}
    else
    if(x == 1) {Toast.makeText(getApplicationContext(), "Right",
                    Toast.LENGTH_SHORT).show();}
    }
    

    【讨论】:

    • 你所做的对可读性没有好处。这样你只会编写更多代码。
    猜你喜欢
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多