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
的代码。所以,这就是“突破点” 当然,您必须为每个开关箱添加“断路器”!我有其他的选择方法,新手错了!谢谢