繁体   English   中英

如何检查按钮是否被单击

[英]how to check whether Button is clicked or not

我必须检查按钮是否被单击。如果单击的应用程序必须执行一项任务,否则,应用程序必须执行另一项任务。 我尝试这样做,但没有收到连接错误,该错误已在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'设置为true。

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

                }
            });

但是执行完之后,光标将直接进入此处并显示“ no connection”。

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");
    }

}

任何人都对此有解决方案。

如你所说

“按钮是否被单击。如果单击的应用程序必须执行一项任务,如果没有应用程序必须执行另一项任务”,那么,如果我是您,我将放置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}
    }
    });

您正在使用NPE(NullPointerException)因为您在使用时Btnclicked在代码中初始化Btnclicked 。即,您正在检查Btnclicked是否为false,例如

if (Btnclicked == false) {

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

因此,要摆脱这种情况,您只需添加

Btnclicked=true;

要么

Btnclicked=false;

根据您的逻辑在if循环之前。

要么

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

希望这可以帮助。

删除您不需要的Btnclicked。 OnClickListner适用于您要执行的操作。 未按下按钮时要运行的代码放在前面

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

并将您希望在单击按钮时运行的代码放在onClick(){}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM