2014-10-02 7 views
0

У меня есть вход в систему, которая является основным видом деятельности. Второй регистр. Я пытаюсь отправить электронное письмо из учетной записи регистрации обратно в систему регистрации после регистрации, однако я не могу получить значение из намерения. Я заметил некоторые фильтры в манифесте при основном действии, но не уверен, может ли это вызвать такую ​​проблему.Намерение не отправлено на основной вид деятельности

Регистрация активность:

Intent myIntent = new Intent(Register.this, LoginPage.class); 
myIntent.putExtra("registerEmail", mail); 
Register.this.startActivity(myIntent); 

Основная деятельность:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login_page); 
    Intent intent = getIntent(); 
    String value = intent.getStringExtra("registerEmail"); 
    if (value!=null) 
    { 
     ... 
    } 
} 

Manifest:

<activity 
     android:name=".LoginPage" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

значение всегда нуль, когда я вернусь к LoginPage из регистра и я уверен, я отправил содержание в намерение в Регистр деятельности

Благодарим вас заблаговременно.

ответ

3

Когда от активности А вы начинаете другую деятельность (деятельность B), для того, чтобы вернуться назад результат деятельности А, вы должны использовать startActivityForResult()

Однако, если ваша основная деятельность начала использовать Intent.FLAG_ACTIVITY_SINGLE_TOP, вы можете перехватить цель использования onNewIntent() внутри вашей основной деятельности:

@Override 
    protected void onNewIntent(Intent intent) { 
     String value = intent.getStringExtra("registerEmail"); 
     super.onNewIntent(intent); 
    } 
+0

Да, я подумал об этом, но не заметил, что флаг установлен где угодно:/ – stkent

+0

@ user3607584 Вы решаете свою проблему, используя startActivityForResult() или onNewIntent()? – GVillani82

0

может быть, вы должны прочитать registerEmail значение в onResume, когда вы вернетесь к авторизации деятельности

1

Намерение фильтров, которые вы видите в своем манифесте файле, чтобы указать на Android рамках которой деятельность должна показать, когда вы первый запуск вашего приложения , Фильтры Intent не нужны для обычных внутренних операций, таких как запуск нового действия в вашем собственном приложении.

Ваш код выглядит нормально. Можем ли мы увидеть немного больше кода из каждого класса (например, где уволено намерение)?

+0

Да, я проверил почту, и это было не так, как я упоминал в своем сообщении. Должен быть какой-то другой улов. Спасибо за очистку фильтров thingy – user3607584

0

похоже, ваш будет хотеть использовать startActivityForResult с намерением, что регистрация активности может идентифицировать и называть sendResult (Intent намерения) из метода OnDestroy. С помощью этого намерения вы можете связать нужные вам данные и с помощью функции LoginActivity overActivityResult получить данные о намерениях пакета.

Смежные вопросы