2016-02-13 31 views
0

經過物體的片段我FirstActivity,用戶將登錄。如果用戶在數據庫中,它被加載,應該是「通過」的SecondActivityFragment這是SecondActivity內。需要檢查用戶是否註冊不完整,如果是,工具欄將顯示一個警告菜單項,告訴它完成註冊。通過兩個活動

┌FirstActivity 
├─SecondActivity 
└──SecondActivityFragment 

每一個教程,我看到展示瞭如何通過活動傳遞數據和片段談論取代片段等等,我覺得這不是我的情況。

我在SecondActivityFragment上創建了newInstance(),但我有點不知所措。

public static SecondActivityFragment newInstance(User user) { 
     Bundle args = new Bundle(); 
     args.putSerializable("user", user); 
     SecondActivityFragment fragment = new SecondActivityFragment(); 
     fragment.setArguments(args); 
     return fragment; 
} 

而當登錄按鈕

if (userExists()) { 
    userManager = new UserManager(); 
    User user = userManager.getByEmailPwd(editEmail.getText().toString(), editPwd.getText().toString()); 
    Intent secondActivity = new Intent(getContext(), SecondActivity.class); 

    SecondActivityFragment.newInstance(user); 
    startActivity(secondActivity); 
} 
+1

這條線沒有做任何事情'SecondActivityFragment.newInstance(用戶);'你應該通過與用戶的意圖SecondActivity,反過來,給它到片段 –

+1

你的問題是什麼? –

+0

@TaylorCourtney對不起,如果我沒有讓自己清楚,但它如何將用戶對象傳遞給SecondActivityFragment。 –

回答

4

嘗試用戶點擊把user到您的secondActivity意圖。

然後在SecondActivityonCreate方法使用getIntent().getSerializable()得到user類和創建SecondActivityFragment一個實例。

+0

這是我當時的第一個想法,但我想知道是否存在一些如何通過「直接」。無論如何,非常感謝。 –

2

調用

SecondActivityFragment.newInstance(user); 

這種方式,不會造成什麼將得到呈現任何影響。

如果你想呈現的片段次活動的背景下,考慮通過該片段需要知道的第二個活動數據 - 它應該是某事像:

secondActivity.putSerializable("user", user) 
在SecondActivity的onCreate

然後,或在其他的方法,你必須更換片段顯示,爲您SecondActivityFragment例如:

User user = null; 
    final Bundle args = getIntent().getExtras(); 
    if(args.getSerializable("user") instanceof User){ 
     user = (User)args.getSerializable("user"); 
    } 
    if(user != null){ 
     Fragment secondActivityFragment = SecondActivityFragment.newInstance(user); 
     FragmentMenager fragmentMenager = getFragmentMenager(); 
     FragmentTransaction fragmentTransaction = fragmentMenager.beginTransaction(); 
     fragmentTransaction.replace(R.id.frame_for_your_fragment, secondActivityFragment); 
    }