2016-07-29 5 views
-1

У меня есть две активности Activity-A и Activity-B, и я передаю значение от Act-A к Act B с использованием намерения. Все работает хорошо. Когда я открываю свой Act-B, я получаю значение от Act-A. Теперь проблема заключается в том, когда вы нажимаете кнопку «Назад» (дважды), а затем я получаю свой Act-A. когда я нажимаю один раз на ту же самую деятельность, что и сделал, не переводите меня на мой Act-A.Почему моя кнопка обратной связи не работает должным образом

Act-A:

btn_add_city.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View view) { 
         // Launching Add_City Screen 
         Intent i = new Intent(getApplicationContext(), 
    Acti-B.class); 
         startActivity(i); 
passmyValue(); 

        } 
       }); 

     public void passmyValue(){ 

       intent = new Intent(getApplicationContext(),Act-B.class); 
       intent.putExtra("name", receive.getText().toString()); 
       startActivity(intent); 
      } 

Act-B:

receive = (TextView)findViewById(R.id.userHidden); 
receive.setText(getIntent().getStringExtra("name")); 
+2

Как это возможно? Вы переопределили 'onBackPressed'? Есть ли что-то еще (например, клавиатура), которое закрывается после первого нажатия, а затем активность на втором ...? – Vucko

+0

Попробуйте переопределить (только супер) ваш onBackPressed и brakepoint там, чтобы узнать, вызван ли метод. –

+0

Проблема заключается в том, что в моей Activity-A содержится кнопка, когда я нажимаю эту кнопку, она откроет Activity-B. на той же странице у меня есть Intent – AndroidBoy

ответ

0

Вы только новые два намерения и начинаете два действия, которые являются Activity-B и Activity-B. Фактически у вас есть три действия в стеке задач, это Act-A, Act-B, Act-B.

Не нужно начинать одно и то же действие дважды. Попробуйте коды ниже, я думаю, что это помогает.

btn_add_city.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     // Launching Add_City Screen 
     // It's no need to start the same activity for twice 
     passmyValue(); 
    } 
}); 

public void passmyValue(){ 
    intent = new Intent(getApplicationContext(),Act-B.class); 
    intent.putExtra("name", receive.getText().toString()); 
    startActivity(intent); 
} 
1

Ваша проблема в этом фрагменте кода:

// Launching Add_City Screen 
Intent i = new Intent(getApplicationContext(), Acti-B.class); 
startActivity(i); 
passmyValue(); 

Вы начиная Activity-B два времени, первый раз без каких-либо дополнительных функций и второй раз внутри passmyValue().

Как я думаю, ваш Activit-B использует режим запуска по умолчанию, тогда у вас есть 2 экземпляра Activity-B. Таким образом, ваш задний стек будет выглядеть так: Activity-A -> Activity-B -> Activity-B. Таким образом, вам нужно дважды вернуться назад, чтобы вернуться к Activity-A.

Просто удалите эти строки:

Intent i = new Intent(getApplicationContext(), Acti-B.class); 
startActivity(i); 
1

В этом фрагменте кода:

@Override 
        public void onClick(View view) { 
         // Launching Add_City Screen 
         Intent i = new Intent(getApplicationContext(), 
    Acti-B.class); 
         startActivity(i); 
passmyValue(); 

        } 

Удалите первый намерение, потому что вы начинаете свою деятельность в два раза. Это, в свою очередь, означает, что ваша активность B запускается один раз без намерения дополнительно, а также поверх нее. Нажатие назад закрывает первый и снова закрывает второй экземпляр. Просто удалите строки и запустить B активность, как это:

@Override 
    public void onClick(View view) { 
    passmyValue(); 
} 
2

Так я думаю, что вы должны быть в состоянии играть с ANDROID INTENTS. И это может быть Similar Question to you. Я надеюсь, что это поможет вам, если не пожалуйста, не стесняйтесь отвечать. :) :)

1

В OnClick(), вы начинаете активность-B по

Intent i = new Intent(getApplicationContext(), 
    Acti-B.class); 
         startActivity(i); 

и вы снова вызова startActivity(intent) в PassMyValue методе, где намерение такое же, как я. Таким образом, вы запускаете Activity-B 2 раза. Вам необходимо исправить это, удалив

Intent i = new Intent(getApplicationContext(), 
    Acti-B.class); 
         startActivity(i); 
Смежные вопросы