2014-10-02 68 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) 
    { 
     ... 
    } 
} 

清单:

<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),以便返回回结果到活动A,你应该使用startActivityForResult()

但是,如果你的主要活动是利用Intent.FLAG_ACTIVITY_SINGLE_TOP开始,你可以拦截意图使用onNewIntent()您的主要活动中:

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

是的,我想到了这一点,但没有看到设置在任何地方的标志:/ – stkent 2014-10-02 20:15:44

+0

@ user3607584你是否使用startActivityForResult()或onNewIntent()解决了你的问题? – GVillani82 2014-10-02 20:23:30

0

也许你应该阅读的onResume值registerEmail当您返回到登录活动

1

您在清单文件中看到的意图过滤器,以指示Android框架,其活动应显示当你第一次启动您的应用程序。通常的内部操作不需要意图过滤器,例如在自己的应用程序中启动新的活动。

否则您的代码看起来不错。我们能否从每个类中看到更多的代码(例如,意图是从哪里触发的)?

+0

是的,我检查了邮件,它不是空的,因为我在我的帖子中提到。必须有某种其他的捕获。谢谢你清理过滤器thingy – user3607584 2014-10-02 20:12:11

0

它看起来像你会希望有意向的注册活动能够识别并从的onDestroy方法调用sendResult(意向意图)使用startActivityForResult。有了这个意图,您可以将您需要的数据绑定到它,并从LoginActivity覆盖onActivityResult来获取捆绑目标数据。

相关问题