2014-10-02 53 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來獲取捆綁目標數據。

相關問題