Назад Стрелка, выходящая из приложения в Android [дубликат]

Учитывая свойство класса, вы можете указать другой уровень доступа, префикс объявления свойства с помощью модификатора доступа, а затем get или set между скобками. Например, свойство класса с публичным получателем и частным сеттером будет объявлено как:

private(set) public var readonlyProperty: Int

Рекомендуемое чтение: Getters and Setters

Martin's соображения относительно уровня доступности все еще действительны, т. е. нет модификатора protected, internal ограничивает доступ только к модулю, private только к текущему файлу и public без ограничений.

Swift 3 примечания

К языку добавлены 2 новых модификатора доступа, fileprivate и open, а private и public были слегка изменены:

  • open применяется только к классам и членам класса: он используется, чтобы позволить классу быть подклассом или член переопределяться вне модуля, где они определены. public вместо этого делает класс или член общедоступным, но не наследуемым или переопределяемым
  • private теперь делает элемент видимым и доступным только из объявляющего объявления, тогда как fileprivate для всего файла, где он содержится

Подробнее здесь .

73
задан Anirudh Ramanathan 21 January 2013 в 13:35
поделиться

9 ответов

Я думаю, вы хотите переопределить операцию нажатия кнопки «домой». Вы можете переопределить эту функциональность, как это в своей деятельности.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        Toast.makeText(getApplicationContext(),"Back button clicked", Toast.LENGTH_SHORT).show(); 
        break;
    }
    return true;
}
164
ответ дан Suragch 20 August 2018 в 21:48
поделиться
  • 1
    Noah Ibrahim, На самом деле есть кнопка «Назад» в верхнем левом углу, как кнопка «Назад» в браузере. Когда я нажимаю на эту кнопку, я хочу вернуться к предыдущей деятельности. Не похоже на код u, опубликованный выше. – G K 21 January 2013 в 16:09
  • 2
    да, этот мир кода показывает, как обрабатывать событие click – ibrahimyilmaz 21 January 2013 в 17:14
  • 3
    Добавить super.onBackPressed (); к нему – redestructa 22 July 2013 в 15:33
  • 4
    Это сработало для меня после того, как я изменил return true; на return super.onOptionsItemSelected(item). Затем вы можете что-то сделать, когда пользователь нажимает кнопку назад на панели действий, но сохраняет ту же функциональность кнопки. – kumaheiyama 16 February 2015 в 20:55
  • 5

Существует несколько способов настройки кнопки возврата в строке:

1) метод .setDisplayHomeAsUpEnabled(true); сделает это, а затем вы можете просто отменить android.R.id.home

2 ) добавление <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="my.package.parrent" /> в Android Manifest, но в этом случае вы не можете переопределить android.R.id.home в OnOptionsMenuSelected.

.. для тех, кто задается вопросом, почему он не работает для них ...

0
ответ дан Jiří 20 August 2018 в 21:48
поделиться
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                switch (item.getItemId()) {
                case android.R.id.home:
                       finish();
                   break;
                }
                return true;
        }
7
ответ дан Krunal Shah 20 August 2018 в 21:48
поделиться
  • 1
    Вы могли бы добавить его в качестве комментария. Это более или менее то же, что и принятый ответ. – Sufian 24 March 2014 в 17:00

Если вы хотите вернуться к предыдущему экземпляру Activity, нажав кнопку «Главная страница ActionBar», не обновляя его, вы можете переопределить метод getParentActivityIntent, чтобы использовать тот из заднего стека:

@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public Intent getParentActivityIntent() {
      return super.getParentActivityIntent().addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
}

EDIT: Также вы можете добиться того же результата, установив для параметра launchMode вашей родительской активности значение singleTop. Поэтому установите android:launchMode="singleTop" на родительскую активность в манифесте. Или вы можете использовать флаг FLAG_ACTIVITY_CLEAR_TOP с намерением UP. ссылка: Предоставление навигации вверх

2
ответ дан Leo Droidcoder 20 August 2018 в 21:48
поделиться
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == android.R.id.home) {
        onBackPressed();
        return true;
    }
    //noinspection SimplifiableIfStatement
    if (id == R.id.signIn) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
///////////////////
@Override
public void onBackPressed() {
    super.onBackPressed();
    finish();
}
0
ответ дан Roshaan Qurban 20 August 2018 в 21:48
поделиться

Если вы хотите, чтобы кнопка возврата ActionBar вела себя так же, как кнопка аппаратного возврата:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
            if (item.getItemId() == android.R.id.home) {
                    onBackPressed();
                    return true;
            }
            return false;
    }
32
ответ дан ruX 20 August 2018 в 21:48
поделиться
  • 1
    случай android.R.id.home не стреляет – Trancer 1 February 2017 в 20:15
  • 2
    @Trancer, если вы используете его во Фрагменте, вы должны дополнительно вызвать setHasOptionsMenu(true) в методе onCreate фрагмента – wilddev 16 June 2017 в 06:12

Две вещи, чтобы иметь в виду, что пользователь может нажать кнопку «Назад» или нажать кнопку входа в панель действий. Итак, если вы хотите перенаправить его в тот же пункт назначения, вы можете это сделать.

@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();
}

Это приведет к намерению пользователя нажать любую клавишу или кнопку панели действий.

8
ответ дан ssi-anik 20 August 2018 в 21:48
поделиться
  • 1
    случай android.R.id.home не стреляет – Trancer 1 February 2017 в 20:14
  • 2
    @Trancer, Это было почти 1,5+ года. И сейчас я не занимаюсь андроидом. Теперь я не могу вам помочь. Сожалею. – ssi-anik 2 February 2017 в 06:12
  • 3
    Я уже нашел решение. Но спасибо за ваш ответ – Trancer 2 February 2017 в 13:38
  • 4
    так что же такое решение? – GA1 24 October 2017 в 10:11

Извините, мой последний ответ, но для всех, кто пришел на эту страницу с тем же вопросом, я попробовал следующее:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
  ...
  if (item.getItemId() == android.R.id.home) {
    ....
  }
  ....
}

, но это не удалось поймать кнопку «Назад» ,

В конце концов я нашел метод, который работал для меня на https://stackoverflow.com/a/37185334/3697478 , который должен переопределить «onSupportNavigateUp ()», поскольку я используя панель действий из библиотеки поддержки AppCompatActivity. (Существует эквивалент «onNavigateUp ()» для новой библиотеки инструментов / панели инструментов.)

@Override
public boolean onSupportNavigateUp(){  
  finish();  
  return true;  
}

, и я удалил раздел «android: parentActivityName =». MainActivity из файла манифеста.

2
ответ дан Stephen Bridgett 20 August 2018 в 21:48
поделиться

Я достиг этого, используя всего лишь два шага:

Шаг 1: перейдите в AndroidManifest.xml и добавьте параметр в тег - android: parentActivityName = ". home.HomeActivity"

example:

 <activity
    android:name=".home.ActivityDetail"
    android:parentActivityName=".home.HomeActivity"
    android:screenOrientation="portrait" />

Шаг 2: в ActivityDetail добавьте действие для предыдущей страницы / активности

:

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
       case android.R.id.home:
           onBackPressed();
           return true;
    }
    return super.onOptionsItemSelected(item);
 }
2
ответ дан Vivek Hande 20 August 2018 в 21:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: