OnOptionsItemSelected - 按一个按钮执行另一个按钮的操作

问题描述 投票:2回答:1

我有一个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);
}
java android
1个回答
2
投票

您忘记为每种情况添加break

@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的代码。所以,只是“休息”点!

© www.soinside.com 2019 - 2024. All rights reserved.