如何检查是否单击了按钮

时间:2015-03-26 17:36:24

标签: java android

我必须检查是否单击了按钮。如果单击的应用程序必须执行一项任务,如果没有,则应用程序必须执行另一项任务。我试图这样做,但我没有得到任何连接错误,我已经把它放在catch块的代码末尾。

 protected void onCreate(Bundle savedInstanceState) {
    PracticeVO practiceObj;

    try {

        setTitle("Klarity");
        setPrefBtn = (Button) findViewById(R.id.setPrefBtn);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_klarity_home);

        /*
         * asynchronous calls
         */

        StrictMode.ThreadPolicy policy = new     StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);

        final ConnectionHelper con = new ConnectionHelper();
        /*
         * It will connect to DB and fetches the Practice Information
         */
        if (Btnclicked == false) {

            String allPracticesStr = null;

这里我设置了布尔变量'Btnclicked'为真。

 setPrefBtn.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    Btnclicked=true;
                    Intent setPrefIntent = new Intent(KlarityHome.this,
                            SetPreferences.class);
                    startActivity(setPrefIntent);

                }
            });

但执行此操作后光标直接进入此处并显示“无连接”。

catch (Exception ex) {
        Context context = getApplicationContext();
        CharSequence text = "There is some error in application";
        int duration = Toast.LENGTH_LONG;

        Toast toast = Toast.makeText(context, text, duration);
        toast.show();
        System.out.println("no connection");
    }

}

任何人都有解决方案。

3 个答案:

答案 0 :(得分:2)

如你所说

  

“单击或不单击按钮。如果单击应用程序必须执行一项任务,如果没有应用程序必须执行另一项任务”   所以,如果我是你,我将放置2个单选按钮,每个按钮都包含你想要做的任务的文本,并为他们添加一个监听器,如下所示:

radiobutton1.setOnCheckedChangeListener(new RadioButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            radiobutton2.setChecked(false);
        }
    });

radiobutton2.setOnCheckedChangeListener(new RadioButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                radiobutton1.setChecked(false);
            }
    });

最后,在按钮中执行您要执行的任务:

    Button.setOnClickListener(new Button.OnClickListener() {
                public void onClick(View v) {
    if(radiobutton1.isChecked){
    //do task 1
}else{
//do task2}
    }
    });

答案 1 :(得分:0)

您收到NPE(NullPointerException),因为您在使用时尚未在代码中初始化Btnclicked。您正在检查Btnclicked是否为假,如

if (Btnclicked == false) {

但在检查时,Btnclicked的值为null,因此是NPE。

所以要摆脱这个,你只需添加

Btnclicked=true;

Btnclicked=false;
根据您的逻辑,在if循环之前

或只是将Boolean Btnclicked;的声明替换为Boolean Btnclicked=false;

希望这有帮助。

答案 2 :(得分:0)

删除Btnclicked你不需要它。 OnClickListner适用于您尝试做的事情。未按下按钮时要运行的代码将其置于

之前
//When button is not pressed
setPrefBtn.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    //When button is pressed
                }
            });

单击按钮时要运行的代码将其放在onClick(){}