Две вещи, чтобы иметь в виду, что пользователь может нажать кнопку «Назад» или нажать кнопку входа в панель действий. Итак, если вы хотите перенаправить его в тот же пункт назначения, вы можете это сделать.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return false;
}
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
startActivity(intent);
finish();
}
Это приведет к намерению пользователя нажать любую клавишу или кнопку панели действий.
Если у вас есть несколько операторов в условии if, вы должны использовать блок BEGIN ... END
для их инкапсуляции.
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
BEGIN
SET @test1 = 'test1'
SET @test2 = 'test2'
END
ELSE
BEGIN
SET @test1 = 'testelse'
SET @test2 = 'testelse'
END
Поведение имеет смысл, так как ваше первое испытание будет разбито так:
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
SET @test1 = 'test1'
SET @test2 = 'test2'
ELSE
SET @test1 = 'testelse'
и ELSE
потерпят неудачу, так как он не принадлежит к любому оператору IF.
Подумайте об этом:
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
BEGIN
SET @test1 = 'test1'
SET @test2 = 'test2'
END
ELSE
BEGIN
SET @test1 = 'testelse'
SET @test2 = 'testelse'
END
Если у вас есть несколько операторов после IF
, вы должны использовать begin
и end
(например, по сравнению с accolades в c #).
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
BEGIN
SET @test1 = 'test1'
SET @test2 = 'test2'
END
ELSE
BEGIN
SET @test1 = 'testelse'
SET @test2 = 'testelse'
END
Используйте BEGIN
и END
для обозначения блока с несколькими операторами, как и с {
и }
на других языках, в которых вы можете разместить несколько операторов SET
...
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
BEGIN
SET @test1 = 'test1'
SET @test2 = 'test2'
END
ELSE
BEGIN
SET @test1 = 'testelse'
SET @test2 = 'testelse'
END
Или используйте SELECT
, чтобы назначать значения вашим переменным, позволяя назначать оба в одном утверждении и избегать использования BEGIN
и END
.
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
SELECT
@test1 = 'test1',
@test2 = 'test2'
ELSE
SELECT
@test1 = 'testelse',
@test2 = 'testelse'
Второе выражение в вашем вопросе всегда будет вызывать execute @ test2 = 'testelse', потому что ELSE заканчивается сразу после первого выражения после else:
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
SET @test1 = 'test1'
ELSE
SET @test1 = 'testelse'
-- IF is done evaluating here
SET @test2 = 'testelse'
Если у вас есть несколько выражений в IF , вы всегда можете группировать выражения, используя BEGIN / END.
Но в вашем случае самым простым способом было бы это:
IF (SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10
SELECT @test1 = 'test1', @test2 = 'test2'
ELSE
SELECT @test1 = 'testelse', @test2 = 'testelse'