Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OnOptions ItemSelected-按下一个按钮执行另一个按钮的操作_Java_Android - Fatal编程技术网

Java OnOptions ItemSelected-按下一个按钮执行另一个按钮的操作

Java OnOptions ItemSelected-按下一个按钮执行另一个按钮的操作,java,android,Java,Android,我有一个带有两个按钮的onOptionsItemSelected方法,可以通过单击其中一个按钮来更改子项的值 一个按钮为“完成”,另一个按钮为“正在进行” 我单击“完成”按钮,它会正确地更改子值,然后将值更改为“正在进行”,甚至不单击“正在进行”按钮 我找不到任何类似的问题,任何帮助都将不胜感激 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) {

我有一个带有两个按钮的
onOptionsItemSelected
方法,可以通过单击其中一个按钮来更改子项的值

一个按钮为“完成”,另一个按钮为“正在进行”

我单击“完成”按钮,它会正确地更改子值,然后将值更改为“正在进行”,甚至不单击“正在进行”按钮

我找不到任何类似的问题,任何帮助都将不胜感激

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

        case R.id.complete:
            Log.d(TAG, "Complete button tapped");
            Intent intent = getIntent();

            final String key = intent.getStringExtra("passKey");

            status.setText(R.string.Complete);

            DatabaseReference ref = database.child(key);
            final DatabaseReference statusRefComplete = ref.child("Status");

            statusRefComplete.setValue("Complete").addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()) {
                        Toast.makeText(edit_task.this, "Task Complete", Toast.LENGTH_SHORT).show();
                    }
                }
            });

        case R.id.inprogress:
            Log.d(TAG, "In-Progress button tapped");
            Intent intent2 = getIntent();

            final String key2 = intent2.getStringExtra("passKey");

            status.setText(R.string.Inprogress);

            DatabaseReference ref2 = database.child(key2);
            final DatabaseReference statusRefInProgress = ref2.child("Status");

            statusRefInProgress.setValue("In-Progress").addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()) {
                        Toast.makeText(edit_task.this, "Task In-Progress", Toast.LENGTH_SHORT).show();
                    }//if
                }//OnComplete
            });


    }
    return super.onOptionsItemSelected(item);
}
@覆盖
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.complete:
日志d(标签“点击完整按钮”);
Intent=getIntent();
最终字符串键=intent.getStringExtra(“passKey”);
status.setText(R.string.Complete);
DatabaseReference=database.child(键);
最终数据库参考状态refcomplete=ref.child(“状态”);
statusRefComplete.setValue(“Complete”).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Toast.makeText(编辑_task.this,“任务完成”,Toast.LENGTH_SHORT.show();
}
}
});
案例R.id.inprogress:
Log.d(标签“点击进行中按钮”);
Intent intent2=getIntent();
最终字符串key2=intent2.getStringExtra(“密钥”);
status.setText(R.string.Inprogress);
DatabaseReference ref2=database.child(key2);
最终数据库参考状态refinprogress=ref2.child(“状态”);
statusRefInProgress.setValue(“进行中”).addOnCompleteListener(新OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Toast.makeText(编辑_task.this,“任务进行中”,Toast.LENGTH_SHORT.show();
}//如果
}//未完成
});
}
返回super.onOptionsItemSelected(项目);
}

您忘记为每个条件添加
中断

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    ...
    switch (item.getItemId()) {

        case R.id.complete:
            ....
            break; // -> You must add this line.
        case R.id.inprogress:
            ...
            break; // -> You must add this line.
    }
    ...
}

如果不添加该选项,代码将执行
R.id.complete
的代码,但不会停止。它将继续执行并运行
R.id.inprogress
的代码。所以,这就是“突破点”

当然,您必须为每个开关箱添加“断路器”!我有其他的选择方法,新手错了!谢谢